Inno Setup逗号错误

时间:2011-10-06 16:39:15

标签: inno-setup pascal

我在[Code]中有GetVersion函数,返回一个像“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

感谢Deanna,但不幸的是,这是指向此的错误消息:

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 :(得分:0)

我认为你不能只在这样的代码中使用Inno Setup常量,你必须使用ExpandConstant()

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

答案 1 :(得分:0)

你没有给我们足够的信息来给出明确的答案,但我认为情况如下。

您已经定义了一些名为MyAppVersion的常量,您可以让ISPP(Inno Setup预处理器)替换。现在,你没有告诉我们这个变量的类型,你还没有告诉我们GetVersion的签名是什么(特别是它期望什么类型的参数?)。但是,如果这些类型是字符串,则需要编写

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

为了获得,比方说,

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

而不是

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

这是不正确的(实际上,这种程度让我的眼睛看起来很伤人。)