【问题标题】:How can I get the length of a static array?如何获取静态数组的长度?
【发布时间】:2012-05-14 19:48:20
【问题描述】:

如果我有一个静态标签数组:

Labels: array [0..6] of TLabel;

如何获取程序中的标签数量?

另外,如果有人能告诉我更多关于 Pascal Inno Setup 正在使用的类型,或者是否有一些手册。例如,我不能在数组上做High()

【问题讨论】:

    标签: arrays inno-setup pascalscript


    【解决方案1】:

    Inno Setup Unicode 版本:

    在 Unicode 版本的 Inno Setup 中,您可以使用 LowHigh 甚至 Length 函数,就像 Delphi 中已知的那样。所以也许是时候转移到 Unicode 版本来编写这样的代码了:

    function InitializeSetup(): Boolean;
    var
      Labels: array [0..6] of TLabel;
    begin
      MsgBox(
        'Array length: ' + IntToStr(Length(Labels)) + #13#10 +
        'Array low bound: ' + IntToStr(Low(Labels)) + #13#10 +
        'Array high bound: ' + IntToStr(High(Labels)),
        mbInformation, MB_OK);
    end;
    

    Inno Setup ANSI 版本:

    在 ANSI 版本的 InnoSetup 中无法获取静态数组的长度或边界。没有LowHigh 函数,Length 函数仅适用于字符串,GetArrayLength 仅适用于动态数组。只是another静态数组Inno Setup nitpick。

    来源:
    http://www.mirality.co.nz

    【讨论】:

    • 这不起作用它说无效的过程。我认为这仅适用于可变长度数组。
    • 遗憾的是,这看起来是正确的答案。我正在通过使用预处理器来保存高变量然后像Labels: array [0..{#testing}] of TLabel; 这样声明来解决它。如果没有其他人有更好的想法,我会在一天后更新我的问题并将此答案标记为正确。
    • High(Labels), Low(Labels) 在这里工作 (Inno Setup 5.4.2) (RemObjects link)。
    • @TLama - 有趣.. 我使用的是 unicode 版本。现在我安装了 5.4.3 unicode 并且 High/Low 工作正常。
    • @Sertac,就是这样! Unicode 版本有 HighLow,而 ANSI 没有。
    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多