2 votes

Tableau dynamique Pascal/Delphi comme argument

J'aimerais faire quelque chose comme ça :

procedure show(a : Array of Integer);
var
  i : integer;
begin
  for i in a do
    writeln(i);
end;
begin
  show((1, 2));
  show((3, 2, 5));
end.

mais c'est le plus proche que j'ai eu

Program arrayParameter(output);
type
  TMyArray = Array[0..2] of Integer;
var
  arr : TMyArray = (1, 2, 3);
procedure show(a : TMyArray);
var
  i : integer;
begin
  for i in a do
    writeln(i);
end;
begin
  show(arr);
end.

Dois-je donc déclarer un tableau différent à chaque fois que je veux appeler la fonction ? Veuillez fournir un exemple concret.

3voto

Andreas Rejbrand Points 57164

Si vous le faites

procedure show(a: array of Integer);
var
  i: Integer;
begin
  for i in a do
    Writeln(i);
end;

vous pouvez alors écrire

show([1, 2, 3, 4]);

Ce type de paramètre de tableau est appelé un paramètre de tableau ouvert . Si une fonction a un paramètre de tableau ouvert, vous pouvez lui donner des tableaux dynamiques et statiques, en plus de ces "tableaux littéraux". Ainsi, étant donné notre show on peut aussi faire

var
  DynArr: TArray<Integer>; // = array of Integer
  StaticArr: array[0..2] of Integer;

begin
  show(DynArr);
  show(StaticArr);
end;

Juste à titre de comparaison : Si vous faites plutôt

procedure show(a: TArray<Integer>);

ou a un

type
  TDynIntArray = array of Integer;

et faire

procedure show(a: TDynIntArray);

puis show n'acceptera que de tels tableaux dynamiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X