[gelöst] Reihenfolge der finalization?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1782
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

[gelöst] Reihenfolge der finalization?

Beitrag von fliegermichl »

In einem Programm verwende ich u.a. den Virtualtreeview.
Im Finalization Teil der Unit virtualtrees.pas wird eine Bitmap freigegeben. Im Verlauf dessen wird die function DeleteObject(GDIObject: HGDIOBJ): Boolean; aufgerufen, welche wiederum WidgetSet.DeleteObject(GDIObject); aufruft. Zu diesem Zeitpunkt ist aber die Variable widgetset bereits nil. (Wird in Forms.FreeWidgetSet freigegeben und auf nil gesetzt). Das führt natürlich zu einer Zugriffsverletzung.

Soweit mir bekannt ist, werden die finalization Abschnitte in der umgekehrten Reihenfolge der Einbindung der Units aufgerufen.
Dabei ist aber die Unit Forms die erste eingebundene Unit und virtualtrees die letzte.

Ist das ein Fehler oder kann das andere Ursachen haben?

Mein System ist Lazarus 4.7 (rev lazarus_4_6-58-g310cad12d8) FPC 3.2.2 i386-win32-win32/win64
Zuletzt geändert von fliegermichl am Di 9. Jun 2026, 13:59, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 5442
Registriert: Fr 8. Apr 2011, 09:01

Re: Reihenfolge der finalization?

Beitrag von wp_xyz »

Kannst du versuchen, das in einem kleinen Projekt zu reproduzieren und hochzuladen? Bei allem, was ich mit VTV gemacht habe, ist so ein Fehler noch nie aufgetreten.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1782
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Reihenfolge der finalization?

Beitrag von fliegermichl »

Hat sich erledigt.
Irgendwie ist in der lpr Datei das einbinden der unit interfaces hinter forms geraten und in interfaces.finalization wird FreeWidgetSet aufgerufen.

Antworten