gpt4 book ai didi

inno-setup - InnoSetup : How to pass a two dimensional string array to a function

转载 作者:行者123 更新时间:2023-12-04 04:43:51 25 4
gpt4 key购买 nike

Innosetup 快要死了。我收到运行时“类型不匹配”错误,对我来说,这是非常出乎意料的。我正在使用 Inno-setup 5.5.3 (u)(其中 'u' 表示 unicode 版本)

我试图将一个二维数组传递给一个方法。

这是我的完整示例。

[Setup]
AppName=EmptyProgram
AppVerName=EmptyProgram 1
UsePreviousAppDir=false
DefaultDirName={pf}\EmptyProgram
Uninstallable=false
OutputBaseFilename=HelloWorld
PrivilegesRequired=none

[Messages]
SetupAppTitle=My Title

[Code]
var
langMap : array[0..3] of array[0..1] of String;


function getMapVal(map : array of array[0..1] of String; key: String ) : String;
begin
Result:='not testing the body of the method';
end;

function InitializeSetup(): Boolean;
begin
MsgBox('Hello world.', mbInformation, MB_OK);

getMapVal(langMap, 'hello'); // this line here fails with type mismatch! Why?

Result := FALSE;
end;

这个例子会运行,但是对于方法的调用:

getMapVal(langMap, '你好');

它编译,因此对声明感到满意。但是在调用时,不匹配错误。我究竟做错了什么?

最佳答案

首先,你做的不是 HashMap ,而是纯键值列表。目前没有办法在 InnoSetup 中制作真正的泛型 HashMap 。无论如何,您当前的代码需要完全重构。我宁愿这样写:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
type
TKey = string;
TValue = string;
TKeyValue = record
Key: TKey;
Value: TValue;
end;
TKeyValueList = array of TKeyValue;

function TryGetValue(const KeyValueList: TKeyValueList; const Key: TKey;
var Value: TValue): Boolean;
var
I: Integer;
begin
Result := False;
for I := 0 to GetArrayLength(KeyValueList) - 1 do
if KeyValueList[I].Key = Key then
begin
Result := True;
Value := KeyValueList[I].Value;
Exit;
end;
end;

procedure InitializeWizard;
var
I: Integer;
Value: TValue;
KeyValueList: TKeyValueList;
begin
SetArrayLength(KeyValueList, 3);
for I := 0 to 2 do
begin
KeyValueList[I].Key := 'Key' + IntToStr(I);
KeyValueList[I].Value := 'Value' + IntToStr(I);
end;

if TryGetValue(KeyValueList, 'Key2', Value) then
MsgBox('Value: ' + Value, mbInformation, MB_OK);
end;

关于inno-setup - InnoSetup : How to pass a two dimensional string array to a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18506820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com