Standardlösung: Lese die Pointer nach der Größenänderung neu aus.
Man kann es aber auch Mathematisch lösen
Delphi-Quellcode:
SetLength(intarr, 1);
intarr[0] := 10;
pint := @intarr[0];
WriteLn(IntToStr(PInteger(pint)^));
Dec(Cardinal(pint), Cardinal(intarr));
SetLength(intarr, Length(intarr) + 1);
Inc(Cardinal(pint), Cardinal(intarr));
// aka:
// palt := intarr;
// SetLength(intarr, Length(intarr) + 1);
// pint := pint - palt + intarr;
WriteLn(IntToStr(PInteger(pint)^));