Ok, du hast Recht, aber nur, weil
SetLength
im Code vorkommt. Eigentlich logisch, dabei wird ja neuer Speicher reserviert und dadurch kann sich der Zeiger ändern...
Aber ansonsten geht das:
Delphi-Quellcode:
type
TIntArray = array of integer;
procedure Foo(A: TIntArray);
begin
A[0] := 2;
end;
var
A: TIntArray;
begin
SetLength(A, 1);
A[0] := 1;
WriteLn(A[0]); // 1
Foo(A);
WriteLn(A[0]); // 2
ReadLn;
end.