Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EInvalid Pointer - Ungültige Zeigeroperation (https://www.delphipraxis.net/172772-einvalid-pointer-ungueltige-zeigeroperation.html)

roadrunner-S51 22. Jan 2013 09:09

EInvalid Pointer - Ungültige Zeigeroperation
 
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz