【发布时间】:2012-05-14 19:48:20
【问题描述】:
如果我有一个静态标签数组:
Labels: array [0..6] of TLabel;
如何获取程序中的标签数量?
另外,如果有人能告诉我更多关于 Pascal Inno Setup 正在使用的类型,或者是否有一些手册。例如,我不能在数组上做High()。
【问题讨论】:
标签: arrays inno-setup pascalscript
如果我有一个静态标签数组:
Labels: array [0..6] of TLabel;
如何获取程序中的标签数量?
另外,如果有人能告诉我更多关于 Pascal Inno Setup 正在使用的类型,或者是否有一些手册。例如,我不能在数组上做High()。
【问题讨论】:
标签: arrays inno-setup pascalscript
Inno Setup Unicode 版本:
在 Unicode 版本的 Inno Setup 中,您可以使用 Low、High 甚至 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 中无法获取静态数组的长度或边界。没有Low 和High 函数,Length 函数仅适用于字符串,GetArrayLength 仅适用于动态数组。只是another静态数组Inno Setup nitpick。
【讨论】:
Labels: array [0..{#testing}] of TLabel; 这样声明来解决它。如果没有其他人有更好的想法,我会在一天后更新我的问题并将此答案标记为正确。
High(Labels), Low(Labels) 在这里工作 (Inno Setup 5.4.2) (RemObjects link)。
High 和 Low,而 ANSI 没有。