[英]How can I pass array of string a parameter to function in delphi
我有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數組參數。
在第二個示例中,您聲明了一個動態字符串數組 ,但是您沒有為該數組分配任何內存,並且您嘗試將其第一個元素(即單個字符串)指定為指向固定的字符串數組。 然后你試圖傳遞那個期望數組的元素(再次,一個字符串)。 這就是代碼無法編譯的原因。
編寫程序的正確方法更像是這樣的:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.