创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;