Hallo an Alle!
Leider habe ich wieder mal ein Problem mit dem Thema Arrays. Ich habe ein dynamisches Array, aus welchem ich ein Element löschen möchte. Der Code dazu sieht wie folgt aus:
Delphi-Quellcode:
procedure Loesche_Array_Verwaltung(const AIndex: Integer);
var
Testwert : Integer;
begin
if AIndex > High(FeldPlatz) then Exit;
if AIndex < Low(FeldPlatz) then Exit;
if AIndex = High(FeldPlatz) then
begin
SetLength(FeldPlatz, Length(FeldPlatz) - 1);
Exit;
end;
Finalize(FeldPlatz[AIndex]);
System.Move(FeldPlatz[AIndex +1], FeldPlatz[AIndex],
(Length(FeldPlatz) - AIndex -1) * SizeOf(FeldPlatz[0]) + 1);
SetLength(FeldPlatz, Length(FeldPlatz) - 1);
end;
Im Programmablauf kann es vorkommen, dass ich die Prozedur so oft aufrufe, bis das Feld keine Elemente mehr hat. Das funktioniert fehlerfrei. Wenn ich das Feld aber mit neuen Daten gefüllt habe und dann erneut diese Prozedur aufrufe, bekomme ich an der Stelle von SetLength immer die Fehlermeldung einer ungültigen Zeigeroperation.
Könnt ihr mir bitte weiterhelfen, wo der Fehler liegt?