创建一个常量字符串数组

发布于 2024-09-30 11:16:12 字数 94 浏览 3 评论 0原文

Delphi 有没有一种方法可以声明一个字符串数组,例如下面的一个?

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

Is there a way in Delphi declaring an array of strings such as following one?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

地狱即天堂 2024-10-07 11:16:12

在 XE7 中,您可以像这样声明动态数组常量:

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

In XE7 you can declare a dynamic array constant like this:

const
  MyArray: TArray<String> = ['First','Second','Third'];
粉红×色少女 2024-10-07 11:16:12

试试这个

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

try this

Const
Elements =3;
MyArray  : array  [1..Elements] of string = ('element 1','element 2','element 3');
梦里的微风 2024-10-07 11:16:12

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

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;

You can use dynamic arrays and try this:

var
  FMyArray: TArray<string>;

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

While this does do a run-time initialization of a dynamic array on the heap, it also shows that Delphi supports a "pseudo-constructor" on dynamic arrays that allow in-place initialization. (NOTE: the above code isn't thread-safe).

Now all you need to do to find out the length of the array, is use the Length() standard function, or to find the allowed index range, use the Low() and High() standard functions.

If you're using an older version of Delphi, replace the TArray with your own dynamic-array string type such as:

type
  TStringArray = array of string;
紫竹語嫣☆ 2024-10-07 11:16:12

您可以通过间接的方式做到这一点。创建一个函数,如:

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; 

You can do this in a indirect way. Create a function like:

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;

and call this function like:

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

where:

asVelden: ArrayOfString; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文