![]() |
Unerklärliche EAccessViolation am Ende einer Prozedur!?
Ja hallo, ich hab ein mir unerklärliches Problem mit Delphi 6.. :?
Ich habe, grob gesagt, mehrere dynamisch erzeugte Buttons mit derselben OnClick-Prozedur. Die Buttons sollen halt Einträge in einer Liste löschen. Ist aber eigentlich auch irrelevant. Nun tritt manchmal (abhängig davon, in welcher Reihenfolge ich die Listeneinträge lösche!) eine EAccesViolation beim Klicken des Buttons auf. Kein Problem denk ich mir, ich setze also einen Haltepunkt an das "begin" der OnClick-Prozedur. Ergebnis: Die gesamte Prozedur läuft ohne Probleme durch! Erst wenn ich am "end;" der Prozedur angelangt bin, und fortfahren will, erscheint die Exception.. Dabei ist die Prozedur doch schon beendet!? Der "Zeiger" im Quelltext springt dann auf das "end." des Projekt-Quellcodes. Woran könnte das liegen!? Was passiert beim Beenden einer OnClick-Prozedur, das eventuell den Fehler auslösen könnte? Der Button, auf den ich klicke, wird in der OnClick-Prozedur gelöscht (halt dynamisch erstellt). Das dürfte allerdings auch kein Problem sein, da es ja in den meisten Fällen funktioniert.. [edit] Hier noch die gesamte Fehlermeldung: Project termine.exe raised exception class EAccessViolation with message 'Access violation at address 004039B5 in module 'termine.exe'. Read of address 00000028'. Process stopped. Use Step or Run to continue. |
Re: Unerklärliche EAccessViolation am Ende einer Prozedur!?
Zitat:
Lösche niemals Objekte in deren Eventhandler du dich gerade befindest! :warn: :warn: :warn: |
Re: Unerklärliche EAccessViolation am Ende einer Prozedur!?
ah also liegt es doch daran.. Super, danke für die Antwort :-D
Wie krieg ich das denn dan am besten hin, die Buttons zu löschen, wenn ich auf sie drauf klicke? Erstmal invisible und dann nen Timer einbauen, der nach nicht mehr benutzten Buttons sucht und sie in die Pfanne haut? Geht doch sicherlich eleganter oder? :? |
Re: Unerklärliche EAccessViolation am Ende einer Prozedur!?
|
Re: Unerklärliche EAccessViolation am Ende einer Prozedur!?
Ich würde "PostMessage" vorschlagen. Damit kannst du eine beliebige Nachricht (2 x 32bit) an dein Fenster senden und die Nachricht wird erst abgearbeitet, wenn die davor fertig (also dein Buttonclick) ist.
|
Re: Unerklärliche EAccessViolation am Ende einer Prozedur!?
Code-Library:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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