Autor Beitrag
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 14.05.05 09:18 
Morgen!

Ich arbeite ja seit einiger Zeit an einer Komponente, die ich hier bereits in der "Open Source"-Sparte vorgestellt habe. Allerdings habe ich folgendes - seltsames Problem, das nur unter Delphi 2005 auftritt und auch nur dann, wenn ich Delphi schließe, wenn noch ein Projekt offen ist, in dem meine Komponente auf einem Formular irgendwo verwendet wird. Schließe ich vorher das Projekt und dann Delphi passiert nichts. Der Fehler ist eine lästige AV (siehe Bild im Anhang). Der Quelltext ist sehr umfangreich, daher habe ich ihn angehängt (Hinweis: Die Destroy-Routine findet ihr ab Zeile 653). Ich weiß einfach nicht, was den Fehler auslöst...

AXMD
Einloggen, um Attachments anzusehen!
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 16.05.05 07:49 
Hallo

ich war immer der Ansicht, das du zur Laufzeit erstellte Komponenten nicht selbst freigeben mußt, wenn du den owner bei create richtig setzt. Beim Freigeben des owners kümmert der sich um das freigeben der "unterkomponenten".
Beim labeledit ist es genauso: das Label wird innerhalb des Customedit.create erstellt, aber es wird innerhalb von Customedit nicht wieder freigegeben. das Freigeben geschieht bei Tcomponent.destroy.
Also: nimm die destroy raus. Außerdem solltest du free statt destroy nehmen.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 16.05.05 10:23 
user profile iconKeldorn hat folgendes geschrieben:
Also: nimm die destroy raus. Außerdem solltest du free statt destroy nehmen.

Bzw. die Procedure FreeAndNil(Obj), da diese auch die Referenz auf das Objekt zuverlässig eliminiert und somit Assigned-Abfragen richtig funktionieren (die laut Compiler-Magic nur Ref <> NIL prüfen)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
AXMD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 16.05.05 10:31 
user profile iconBenBE hat folgendes geschrieben:
user profile iconKeldorn hat folgendes geschrieben:
Also: nimm die destroy raus. Außerdem solltest du free statt destroy nehmen.

Bzw. die Procedure FreeAndNil(Obj), da diese auch die Referenz auf das Objekt zuverlässig eliminiert und somit Assigned-Abfragen richtig funktionieren (die laut Compiler-Magic nur Ref <> NIL prüfen)


Funktioniert nicht. Hab grade alles durch FreeAndNil ersetzt, neu compiliert und installiert - der Fehler bleibt.

AXMD