将项添加到数组的其他方法

时间:2012-04-02 17:27:49

标签: arrays delphi

有没有办法用

之类的东西填充Delphi数组
array = array('this','that','and uh'); // php
array = ['this','that','and uh']; // javascript

或者如果没有,也许你可以给我一个关于我正在尝试做什么的提示:
我有这个TButton阵列。我在数组中添加了一些按钮,这些按钮应该对用户可见。使用这种数组方法,我可以轻松地使用循环来设置它们的可见性属性。

5 个答案:

答案 0 :(得分: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);

答案 1 :(得分:5)

我不确定它的引入版本是什么,但是在最近的Delphi版本中,您已经能够使用这样的替代语法:

type
  TStringArray = array of string;

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

答案 2 :(得分: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;

答案 3 :(得分:2)

我会使用TList而不是使用数组。它仍然通过其[]运算符为您提供了类似于数组的语法来访问列表元素,但是当您添加/删除项目时,列表本身由RTL动态管理。

答案 4 :(得分:1)

虽然你需要一个现代的Delphi版本来在一个语句中分配一个完整的动态数组,你可以真正使用任何 Delphi版本来构建包含你想要的任何东西的动态数组

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