Ошибка запятой Inno Setup - PullRequest
       42

Ошибка запятой Inno Setup

0 голосов
/ 06 октября 2011

У меня есть функция GetVersion в [Code], которая возвращает строку типа «1004», «1003» и т. Д.

Я создал эту функцию, чтобы проверить значение реестра для наименьших номеров версий и удалить их.

Ниже приведен фрагмент кода, который указывает на ошибку в строке преобразования StrtoInt, с указанием

Comma (,) expected

Вот фрагмент:

function DoesOldVersionsExist(): Boolean;
var
  AppVersion: integer;
  mstr: string;
  VersionInstalled: cardinal;
begin
  AppVersion := StrToInt(GetVersion({#MyAppVersion}), 0);
...

после этой строки я просто сравниваю значения и возвращаю true или false. Очень ценится.

Это сообщение об ошибке:

Line 55
Column 40.
Comma (,) expected

Спасибо, Динна, но, к сожалению, это сообщение об ошибке, указывающее на это:

AppVersion := StrToInt(GetVersion({#MyAppVersion}), 0);
                                     ^

Вот функция GetVersion:

function GetVersion(AppVersion: String): String;
var
  Version: String;
  CharIndex: integer;
  c: char;
begin  
for CharIndex := 1 to Length(AppVersion) do begin
    c := AppVersion[CharIndex];
    if (c <> '.') then
      Version := Version + c;
end;
Result := Version;
end;

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Вы не дали нам достаточно информации, чтобы дать определенный ответ, но я думаю, что ситуация такова.

Вы определили некоторую константу, называемую MyAppVersion, которую вы позволяете заменить ISPP (препроцессор Inno Setup). Теперь вы не сказали нам, к какому типу относится эта переменная, и вы не сказали нам, что такое сигнатура GetVersion (в частности, какой тип аргумента она ожидает?). Однако, , если эти типы являются строками, вам нужно написать

StrToInt(GetVersion('{#MyAppVersion}'), 0);

чтобы получить, скажем,

StrToInt(GetVersion('Some string, this is!'), 0);

вместо

StrToInt(GetVersion(Some string, this is!), 0);

который уродлив (действительно, до такой степени, что мне больно смотреть на него).

0 голосов
/ 06 октября 2011

Я думаю, что вы не можете просто использовать константы Inno Setup в таком коде, вы должны использовать ExpandConstant():

AppVersion := StrToInt(GetVersion(ExpandConstant('{#MyAppVersion}')), 0);
...