Hallo,
du musst für die Deklaration des Parameters einen Typenbezeichner definieren, da bei einem
open array parameter im Aufruf ein statisches Array übergeben werden könnte, dessen Größe natürlich nicht geändert werden kann. Bei der Verwendung eines Typenbezeichners wird dieser Versuch bereits vom Compiler erkannt und zurückgewiesen:
Delphi-Quellcode:
type
TDynPStringArr = array of PString;
procedure P1 (var Arr: array of PString);
begin
// SetLength (Arr, Length(Arr) + 1); -> nicht zulässig bei (möglichen) statische Arrays
end;
procedure P2 (var Arr: TDynPStringArr);
begin
SetLength (Arr, Length(Arr) + 1);
end;
procedure Test;
var
A1: array [0..3] of PString;
A2: TDynPStringArr;
A3: array of PString;
begin
P1 (A1);
P1 (A2);
P1 (A3);
// P2 (A1); -> vom Compiler zurückgewiesen
P2 (A2);
// P2 (A3); -> inkompatible Datentypen
end;
Gruß Hawkeye