Ich intialisiere ein dynamisches Array im Konstruktur von meiner Klasse mit einer Länge von 5. Während der Laufzeit muss ich aber das Array bei Bedarf vergrößern.
Muss ich dann den alten Inhalt des array's speichern bzw. einen Pointer drauf legen oder sind meine Daten dann noch vorhanden.
Zu Testzwecken habe ich das schon einmal ausprobiert und die Daten sind noch vorhanden. Ich weiß jetzt aber nicht ob das Zufall sein kann, weil der Speicherbereich vielleicht überschrieben werden kann und dann wäre meine Daten weg.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
dynArTmp: array of string;
i: integer;
begin
SetLength(dynArTmp, 5);
Memo1.Clear;
for i:= Low(dynArTmp) to High(dynArTmp) do
begin
dynArTmp[ i ] := 'Test ' + IntToStr(i);
Memo1.Lines.Insert(Memo1.Lines.Count, dynArTmp[ i ]);
end;
Showmessage('Array länge wird nun vergrößert!');
SetLength(dynArTmp, High(dynArTmp)+5);
Memo2.Clear;
for i:= Low(dynArTmp)+5 to High(dynArTmp) do
dynArTmp[ i ] := 'TestX ' + IntToStr(i);
//alle anzeigen
for i:= low(dynArTmp) to High(dynArTmp) do
Memo2.Lines.Insert(Memo2.Lines.Count, dynArTmp[ i ]);
SetLength(dynArTmp, 0);
dynArTmp := nil;
end;