web-dev-qa-db-fra.com

Créer un tableau constant de chaînes

Existe-t-il un moyen dans Delphi de déclarer un tableau de chaînes tel que le suivant?

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

essaye ça

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

Dans XE7, vous pouvez déclarer une constante de tableau dynamique comme ceci:

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

Vous pouvez utiliser des tableaux dynamiques et essayer ceci:

var
  FMyArray: TArray<string>;

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

Bien que cela effectue une initialisation au moment de l'exécution d'un tableau dynamique sur le tas, cela montre également que Delphi prend en charge un "pseudo-constructeur" sur des tableaux dynamiques qui permettent l'initialisation sur place. (REMARQUE: le code ci-dessus n'est pas adapté aux threads).

Maintenant, tout ce que vous devez faire pour connaître la longueur du tableau est d'utiliser la fonction standard Length () ou pour trouver la plage d'index autorisée, utilisez les fonctions standard Low () et High ().

Si vous utilisez une ancienne version de Delphi, remplacez TArray par votre propre type de chaîne de tableau dynamique tel que:

type
  TStringArray = array of string;
16
Allen Bauer

Vous pouvez le faire de manière indirecte. Créez une fonction comme:

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;

et appelez cette fonction comme:

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

où:

asVelden: ArrayOfString; 
0
user1919497