我在[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;
答案 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);
这是不正确的(实际上,这种程度让我的眼睛看起来很伤人。)