gpt4 book ai didi

arrays - 如何将字符串数组传递给delphi中的函数参数

转载 作者:行者123 更新时间:2023-12-03 15:44:34 25 4
gpt4 key购买 nike

我在使用 Delphi 时遇到问题。

我写了一个这样的函数:

function MyFunction(arr: array of AnsiString): Boolean;
begin
//code here
end;

现在,当我将 AnsiString 数组直接传递到函数中时,就像这样,一切都完美运行:

MyFunction(['one', 'two', 'three']);

但是,当我尝试像这样存储这个数组时:

var arr: array of AnsiString;

procedure MyProcedure;
begin
arr[0] := ['one', 'two', 'three'];
MyFunction(arr[0]);
end;

存在不匹配错误。

我是 Delphi 的初学者,但这确实令人困惑。

最佳答案

您的第二个示例在功能上与第一个示例不同。

第一个例子很好。该函数采用 open array作为输入参数,并且您直接在该参数中构造一个固定的字符串数组,这非常好。任何数组类型都可以传递给开放数组参数。

在第二个示例中,您声明 dynamic array字符串,但您没有为该数组分配任何内存,并且您正在尝试分配其第一个元素(这是单个字符串)以指向固定的字符串数组。然后您尝试将该元素(同样是单个字符串)传递到需要数组的位置。这就是代码无法编译的原因。

编写程序的正确方法应该是这样的:

procedure MyProcedure;
var
arr: array of AnsiString;
begin
SetLength(arr, 3);
arr[0] := 'one';
arr[1] := 'two';
arr[2] := 'three';
MyFunction(arr);
end;

或者:

procedure MyProcedure;
var
arr: array of AnsiString;
begin
arr := ['one', 'two', 'three'];
MyFunction(arr);
end;

或者:

type
TAnsiStringArray = array of AnsiString;

procedure MyProcedure;
var
arr: TAnsiStringArray;
begin
arr := TAnsiStringArray.Create('one', 'two', 'three');
MyFunction(arr);
end;

关于arrays - 如何将字符串数组传递给delphi中的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931775/

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