簡體   English   中英

如何在delphi中傳遞一個字符串數組參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM