2012-04-02 81 views
4

有沒有一種方法,以填補使用的東西德爾福陣列狀其他方式將項目添加到一個數組

array = array('this','that','and uh'); // php 
array = ['this','that','and uh']; // javascript 

或者,如果有沒有,也許你可以給我一個提示什麼,我試圖做:
我有這個TButtons數組。我在數組中添加了一些按鈕,這對用戶應該是可見的。使用這個數組的方法,我可以很容易地使用循環來設置他們的可見性屬性。

回答

5

使用動態數組和適當的Delphi版本,您可以使用array constructor

myArray := TArray<string>.Create('this', 'that', 'and uh'); 

如果要創建按鈕,然後數組它是這麼寫的:

buttons := TArray<TButton>.Create(btn1, btn2, btn3); 

然後到按鍵陣列上迭代:

for button in buttons do 
    DoSomething(button); 
+0

非常感謝!這段代碼當然很好很乾淨 – Martin 2012-04-02 18:35:10

5

我不是確定它引入了什麼版本,但在Delphi的最新版本中,您可以使用這樣的替代語法:

type 
    TStringArray = array of string; 

procedure Test; 
var stringArray: TStringArray; 
begin 
    stringArray := TStringArray.Create('this','that','and uh'); 
end; 
+0

它是在Delphi 7之後引入的。我沒有安裝Delphi 2005或2006來測試,但是這在Delphi 2007中按預期工作。 – 2012-04-02 19:15:04

4

您可以使用動態數組是這樣的:

type 
    TMyButtonArray = array of TButton; 

procedure TForm2.Foo; 
var 
    MyButtonArray: TMyButtonArray; 
    I: Integer; 
begin 
    MyButtonArray := TMyButtonArray.Create(Button1, Button2 {...}); 
    for I := 0 to High(MyButtonArray) do 
    ShowMessage(MyButtonArray[I].Caption); 
end; 
1

雖然你需要一個現代化的德爾福版本在一條語句分配的整個動態數組,你真的可以用任何德爾福版本構建任何你想要的動態數組。

SetLength(buttons, 3); 
buttons[0] := btn1; 
buttons[1] := btn2; 
buttons[2] := btn3; 
+2

+1,因爲你不配合downvote。 – boileau 2012-04-02 19:05:27

2

而不是使用數組,我會使用TList來代替。它仍然爲您提供了類似數組的語法,用於通過其[]運算符訪問列表元素,但列表本身是由RTL爲您動態管理的,因爲項目被添加/刪除。

相關問題