Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EInvalidPointer beim Schließen (https://www.delphipraxis.net/59407-einvalidpointer-beim-schliessen.html)

Airblader 21. Dez 2005 22:51


EInvalidPointer beim Schließen
 
Hi,
ich hab jetzt jeden thread durch, den ich per Suche gefunden habe, aber bin noch nicht weiter.
Immer wenn ich mein Programm schließe, bekomme ich eine EInvalidPointer-Meldung, das CPU-Fenster sagt mir, dass der Fehler irgendwo in FreeMem liegt (die ich übrigens nicht manuell aufrufe).

Grob gesagt habe ich nur eine Klasse und eine globale (Ja, ich weiß) Variable die als dynamisches array dieser Klasse definiert ist, also

Delphi-Quellcode:
type
 TFoo = class(TObject)
  ...
 end;

var
 Bla: array of TFoo;
Die Hauptunit hat nichts besonderes. Ich definiere auch weder etwas in der Art von OnClose/onDestroy noch einen eigenen Destruktor der Klasse - lediglich den Konstruktor (und eigene Prozeduren).

Weiß jemand wo der Fehler liegen kann? Ich weiß nicht, wo der da auf einen ungültigen Pointer zugreifen soll, wo ich doch garnichts selber mache :gruebel:

air

Master of the Wind 22. Dez 2005 10:19

Re: EInvalidPointer beim Schließen
 
Hallo erstmal... Ich glaube ich habe ein ähnliches Problem...Zumindest bekomme ich auch eine Zugriffsverletzung auf eine Speicheradresse, beim Beenden...naja kannst dir ja mal den thread anschauen Thread

Airblader 22. Dez 2005 10:56

Re: EInvalidPointer beim Schließen
 
Ja, die letzte Antwort gibt mir zu denken, da dort von dynamiscehn Arrays geredet wird - und ich benutze ja eines.

Aber ich hab schon alles mögliche im Formdestroy versucht um das Array zu löschen oder sonstwas, aber ich kriegs nicht hin :gruebel:

air

RavenIV 22. Dez 2005 11:12

Re: EInvalidPointer beim Schließen
 
Zitat:

Zitat von Airblader
Hi,
ich hab jetzt jeden thread durch, den ich per Suche gefunden habe, aber bin noch nicht weiter.
Immer wenn ich mein Programm schließe, bekomme ich eine EInvalidPointer-Meldung, das CPU-Fenster sagt mir, dass der Fehler irgendwo in FreeMem liegt (die ich übrigens nicht manuell aufrufe).

den Fehler hatte ich auch grad.
in einem anderen Forum hab ich gelesen, dass man im ersten unit (quasi die *.dpr) als ersten eintrag in den uses das "ShareMem" eintragen soll.
Hab ich gemacht und der Fehler kam nicht mehr.

Versuchen kannst du es ja mal...

Airblader 22. Dez 2005 11:46

Re: EInvalidPointer beim Schließen
 
Ja, hatte ich auch gelesen schon, hatte es aber in die Nebenunit gemacht.
Werds mal eben probieren, danke.

air

Edit: Fehler besteht weiterhin...

Wraith 22. Dez 2005 11:56

Re: EInvalidPointer beim Schließen
 
im FormDestroy einfach mal reinschreiben: Bla:=nil;
Damit wird der Zeiger auf das dyn. Array gelöscht.

Airblader 22. Dez 2005 12:00

Re: EInvalidPointer beim Schließen
 
Naja, selbst FreeAndNil hilft ja nichts - die Methode übrigens genauso wenig :(

air

Airblader 23. Dez 2005 12:23

Re: EInvalidPointer beim Schließen
 
*PUSH* Problem noch immer bestehend ;)

Muetze1 25. Dez 2005 17:47

Re: EInvalidPointer beim Schließen
 
Fügst du die Instanzen deines dynamischen Arrays auch noch irgendwo anders ein bzw. weist du es noch irgendwo anders zu während der Laufzeit deines Programmes?

Schonmal den RangeCheck angeschaltet und die Overflow Detection? (beides in den Projektoptionen->Compilereinstellungen; danach das Projekt komplett neu erstellen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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