web-dev-qa-db-ja.com

文字列の定数配列を作成します

Delphiには、次のような文字列の配列を宣言する方法がありますか?

{'first','second','third'}
36
none

これを試して

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

XE7では、次のような動的配列定数を宣言できます。

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

動的配列を使用して、これを試すことができます:

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;
16
Allen Bauer

これは間接的な方法で行うことができます。次のような関数を作成します。

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; 
0
user1919497