创build一个常量string数组

在Delphi中,有一种方法可以声明一个string数组,如下面的一个?

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

尝试这个

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

在XE7中,你可以像这样声明一个dynamic数组常量:

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

你可以使用dynamic数组,并尝试这个:

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

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

现在,您只需要使用Length()标准函数来查找数组的长度,或者使用Low()和High()标准函数来查找允许的索引范围。

如果您使用的是旧版本的Delphi,请使用您自己的dynamic数组stringtypesreplaceTArray,例如:

 type TStringArray = array of string; 

你可以用间接的方式做到这一点。 创build一个function,如:

 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;