![]() |
Re: Zugriffsverletzung bei free?
Zitat:
Zitat:
Da bei ihm Form1 der Owner vom Edit ist, ist das Edit über die Liste Form1.Components referenzierbar. Und weil Form1 der Parent vom Edit ist, ist das Edit ebenfalls in Form1.Controls greifbar. Dazu sollte allerdings sinnigerweise Edit.Name beim Createn belegt werden. Zitat:
Objekte vom Typ TComponent (bzw. dessen Ableitungen) zerstören die Komponenten, deren Owner sie sind, bei ihrer eigene Freigabe immer mit. |
Re: Zugriffsverletzung bei free?
Jepp, Ihr habt natürlich recht :-)
Daran, dass das Control durch die Zuweisung des Parents in die Control-Liste des Parents aufgenommen wird, habe ich wirklich nciht gedacht. Und dass ein Objekt einfach so im Raum stehen bleibt, auch ohne jede Referenzierung... nun, ich bin bislang immer vom Gegenteil ausgegangen, habe das gerade mal überprüft und Du hast natürlich recht. Das habe ich wohl von Perl falsch übernommen. |
Re: Zugriffsverletzung bei free?
Okay also das problem an sich hab ich jetzt mit einem unsichtbaren edit umgangen, das ich verschiebe und sichtbar mache wenn ich es benötige.
Aber der Grund des Fehlers ist mir immer noch nicht so ganz klar. Schließlich gibts es ihn ja nur bei einem der beiden Events... Also kann doch das hier in diesem fall nicht zutreffen: (oder???) [by SirThornberry] Zitat:
[by Christian Seehase] Zitat:
|
Re: Zugriffsverletzung bei free?
Moin Hyperspacer,
Zitat:
Davon, dass das Edit danach immer noch funktionsfähig ist war bislang nicht die Rede. So unmittelbar erklären, könnte ich das nicht. Wenn Du mir mal den kompletten Code mit dem sich das reproduzieren lässt zur Verfügung stellen kannst, könnte ich mal versuchen dem mit Hilfe der Debug-DCUs auf den Grund zu gehen. Die dürften bei Deiner Personal nicht dabei sein. |
Re: Zugriffsverletzung bei free?
Die sichtbaren Auswirkungen könnten "Zufall" sein!
Ich habe das Beispiel aus dem ersten Posting hier nachvollzogen. Das Edit wird bei mir mit einem Button-Click erzeugt. Ich bekomme immer eine Exception, egal beim wievielten erzeugenten Edit ich Enter drücke. Das Edit bleibt bei mir nie sichtbar, das Programm schmiert immer ab. Vermutung: Die OnExit Methode funktioniert nur ohne Fehler, weil sie in der ganzen Kette der OnExit-Ereignisbehandlung als letztes abgearbeitet wird und nicht zum Edit zurückkehren muss. Ich habe das jetzt nicht step-for-step nachvollzogen, aber ganz viel anders kann es (zumindest sinngemäß) nicht sein. Die OnKeyDown-Methode muss aber zum Edit zurückkehren, das es aber nach dem Free nicht mehr gibt --> Folge: Crash. Eigentlich ist es aber auch wurscht, wieso und weshalb ... Es ist und bleibt der alte Grundsatz: Objekte nie in einer eigenen Ereignisbehandlungsmethode freigeben! Grundsatz beachten und glücklich sein. :cyclops: ((Irgendwo steht hier oder im DF aber auch eine Umgehung, mit der man eine "Quasi-Selbstzerstörung" vornehmen kann.)) |
Re: Zugriffsverletzung bei free?
Nabend,
Zitat:
Zitat:
Nochmal danke an alle, die sich mit dem Problem befasst haben. :cheers: mfg Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz