Einzelnen Beitrag anzeigen

roadrunner-S51

Registriert seit: 28. Mai 2010
53 Beiträge
 
Delphi 2009 Professional
 
#1

EInvalid Pointer - Ungültige Zeigeroperation

  Alt 22. Jan 2013, 09:09
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?
  Mit Zitat antworten Zitat