Когда я определяю строковую переменную препроцессора (используя ISPP), которая содержит кавычку / апостроф, произойдет ошибка компилятора, когда я использую функцию ExpandConstant
в разделе [Code]
для чтения этой строки.
Вот пример .iss
скрипта для демонстрации / тестирования:
#define _AppName "Uli's Program"
[Setup]
AppName={#_AppName}
AppVersion=1.2.3
DefaultDirName={pf}\{#_AppName}
[Code]
function InitializeSetup: Boolean;
begin
MsgBox(ExpandConstant('{#_AppName}'),
mbInformation,
MB_OK);
Result:=False;
end;
Точное сообщение об ошибке компилятора:
запятая (',') ожидается.
Обновление
Это работает, когда апостроф удваивается. Но теперь заголовки страниц мастера показывают имя приложения с двойным апострофом (из-за AppName={#_AppName}
).
Аналогичная проблема возникает при удалении #define
и изменении сценария следующим образом:
[Setup]
AppName=Uli's Program
AppVersion=1.2.3
DefaultDirName={pf}\{#AppName}
[Code]
function InitializeSetup: Boolean;
begin
MsgBox('{#SetupSetting("AppName")}'),
mbInformation,
MB_OK);
Result:=False;
end;
Теперь сообщение об ошибке компилятора
Назначение ожидается.