在Delphi中是否有一种声明字符串数组的方法,例如下面这个数组?
{'first','second','third'}
const
MyArray: TArray<String> = ['First','Second','Third'];
试试这个
Const
Elements =3;
MyArray : array [1..Elements] of string = ('element 1','element 2','element 3');
你可以使用动态数组并尝试这样做:
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;
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']);
where:
asVelden: ArrayOfString;
E2086 Type 'TArray<T>' is not yet completely defined
错误),除非您在单元中添加一个额外的:type TStringArray = TArray<string>;
。(请注意,必须在单独的type
部分中才能防止该错误,并且这种解决方法似乎无法解决泛型类的问题。有关所有详细信息,请参见工单。) - Marcus Mangelsdorf