创建一个常量字符串数组

时间:2010-11-01 15:06:01

标签: arrays delphi const

Delphi中有没有办法声明一个字符串数组,如下一个?

{'first','second','third'}

4 个答案:

答案 0 :(得分:45)

试试这个

Const
Elements =3;
MyArray  : array  [1..Elements] of string = ('element 1','element 2','element 3');

答案 1 :(得分:40)

在XE7中,您可以声明一个动态数组常量,如下所示:

const
  MyArray: TArray<String> = ['First','Second','Third'];

答案 2 :(得分:16)

您可以使用动态数组并尝试:

var
  FMyArray: TArray<string>;

function MyArray: TArray<string>;
begin
  if Length(FMyArray) = 0 then
    FMyArray := TArray<string>.Create('One', 'Two', 'Three');
  Result := FMyArray;
end;

虽然这确实对堆上的动态数组进行了运行时初始化,但它也表明Delphi支持动态数组上的“伪构造函数”,允许就地初始化。 (注意:上面的代码不是线程安全的。)

现在你需要做的就是找出数组的长度,使用Length()标准函数,或者找到允许的索引范围,使用Low()和High()标准函数。

如果您使用的是旧版本的Delphi,请将TArray替换为您自己的动态数组字符串类型,例如:

type
  TStringArray = array of string;

答案 3 :(得分:0)

您可以间接方式执行此操作。创建一个像:

这样的函数
procedure assignStringArray(var rasVelden: ArrayOfString; const asVeldenIn: Array Of String);
var
   iLengte, iT1: Integer;
begin
   iLengte := Length(asVeldenIn);
   SetLength(rasVelden, iLengte);
   for iT1 := iLengte-1 downto 0 do
      rasVelden[iT1] := asVeldenIn[iT1];
end;

并将此函数称为:

assignStringArray(asVelden, ['String1', 'String2', 'String3']);

其中:

asVelden: ArrayOfString;