【问题标题】:Inno Setup script: Identifier expected errorInno 设置脚本:标识符预期错误
【发布时间】:2014-04-04 17:45:08
【问题描述】:

请帮我编写以下代码:

[Code]
var
    AppVersionNumber: Integer;
    DBVersionNumber: Integer;
function GetAppVersion:Integer;
    var
        AppVersion: AnsiString;
    begin
        ExtractTemporaryFile('info.dat');
        LoadStringFromFile(ExpandConstant('{tmp}\info.dat'), AppVersion);
        AppVersionNumber := StrToInt(Copy(AppVersion, 1, 6));
        DBVersionNumber := StrToInt(Copy(AppVersion, 7, 12));
        GetAppVersion := AppVersionNumber; <== here is error
    end;

我不明白这里有什么问题。 Inno 设置说存在“预期标识符”错误。如果我尝试将这一行的 GetAppVersion 替换为 Result(为什么?我不知道,但我在示例中看到过),它会显示“GetAppVersion 的原型无效”。

这段代码有什么问题?请帮忙

【问题讨论】:

  • 应该使用Result :=

标签: inno-setup


【解决方案1】:

需要Result :=来指定函数的结果/返回值(你不要像VB那样将它分配给函数名)

“Invalid Prototype”错误很可能是因为您在 {code:...} 常量中使用它,该常量要求被调用的函数始终具有单个字符串参数。
尝试使用取自the help file

function GetAppVersion(Param: String): String;

【讨论】:

  • 但是我的函数没有任何参数,应该怎么看?
  • 确切地说,如果从{code:...} 常量中使用它,它必须有一个字符串参数并返回一个字符串,根据我链接到的帮助文章。如果您没有使用{code:...} 常量,那么请尝试向我们展示现在失败的代码以及调用它的代码。
  • 是的,你完全正确。我认为这些功能与通常的功能一样,但事实并非如此。除了字符串或布尔值之外,您不能返回任何其他内容,这真的很愚蠢。但现在至少可以编译了。谢谢
  • 为什么?它接受一个字符串(由于它来自脚本)并在同一上下文中用作字符串。此设计在帮助文件中明确指出。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多