Einzelnen Beitrag anzeigen

backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Speicherzugriffsfehler bei Freigabe vom Frame

  Alt 27. Apr 2007, 10:16
Zitat von Muetze1:
Hast du denn nun schon abgeprüft, dass...

1. Du die Frame Instanzen jeweils nur in einer Variablen / Stelle ablegst und nirgendwo anders?
2. Du beim freigeben (Destruktor) der Frame auch immer ordentlich die dazugehörige Variable/Listenelement auf Nil setzt?
3. Schonmal den Destruktor der Frames überschrieben und überall einen Brechpunkt reingestellt und geschaut, wann die anspringen? Also ob alle nur zu den gewollten Aktionen aufgerufen werden und keiner mal so zwischendurch von woanders her?
4. Hast du bei allen Zugriffen auf eine Variablen mit einer FrameInstanz einen Brechpunkt hingestellt und gleichzeitig bei im Destruktor der Frame und drauf geachtet, dass kein Zugriff mehr auf die Variablen geschieht nach dem der Destruktor angesprungen wurde?
5. Noch nicht beantwortet: Wird im Endeffekt einer langen Aufrufkette die Frame durch ein Ereignishandler der selbigen Frame ausgelöst?

etc, etc, etc.

/EDIT: ok, dann noch ein paar:

6. Sicher das die beim ElTree hinterlegten Objekte noch existieren, wenn ElTree freigegeben wird?
7. Sicher das die Objekte nicht mehr durch andere Routinen angesprochen werden, wenn ElTree freigegeben wird (z.B. ein beim freigeben ausgelöstes OnChange, o.ä.)?
Danke erstmal für die Antwort.

zu 1,2,3,4: hab ich alles kontrolliert, läuft alles korrekt
zu 5: ??? dass heisst?
zu 6: ja, ich bekomme ja schon den fehler, wenn ich über einen button ein .free aufrufe.
zu 7: ja

Mittlerweile habe ich ein Testframe gemacht, auf dem nur ein Eltree liegt und ein Button zum zerstören.

Folgende erkenntnis habe ich:
Das Programm crashed, wenn es versucht den Header über der Liste zu zerstören.
Das Programm crashed nur dann, wenn der Header (Columns) beim Create sichtbar geschaltet ist UND ich ein Objekt in die Liste hänge bevor das Eltree sichtbar ist.

Das Programm crashed nicht, wenn:
- ich vor dem anlegen des Objektes die ShowColumns = False und nach dem Anlegen wieder auf True setze
- wenn ich das Objekt anlege, wenn das Eltree bereits sichtbar ist (zb über einen button auf dem frame)
- wenn ich das ganze in einem kleines Testprogramm mache, in dem ein Frame erzeuge auf dem das Eltree liegt.

Ich verstehe nicht, wieso es in dem Testprogramm klappt und in dem normalen Programm nicht. Was kann der auslöser für so ein verhalten sein? In beiden fällen lege ich das Frame an, bevor die Hauptform sichtbar wird.

Oliver
Oliver
  Mit Zitat antworten Zitat