Autor Beitrag
Uli Schoch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: So 19.08.07 15:38 
Hallo
Ich habe eine Anwendung in Delph 3 geschrieben, die eigentlich gut läuft. Nur macht sie beim Beenden eine Fehlermeldung "Exception EAccess Violation in Modul name.exe bei Adresse xxx. Zugiffsverletzung bei Adresse xxx, Lesen von Adresse yyy."
Eine Zeitlang kam die Fehlermeldung nicht, nach einigen Änderung war sie plötzlich da, dann wiedereinmal weg, völlig unerklärlich warum. Im Code hat es keine speziellen Tricks, compiliert wird auch fehlerfrei.
Hat jemand einen Tipp?
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: So 19.08.07 16:29 
Such Dir mal die genaue Zeile raus, wo er crasht, gehe dann ggf. im Stack-Trace durch und schaue, ob alles in der richtigen Reihenfolge freigegeben wird.

_________________
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.
Uli Schoch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: So 19.08.07 18:29 
Salü Benny
Wie kann ich die genaue Zeile finden? Wenn ich in den Tools/Umgebungsoptionen "Bei Exception anheilten" einschalte, wird nicht angehalten, nur das Fenster mit der Fehlermeldung wird angezeigt.

Gruss
Uli
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 19.08.07 19:05 
Starte deine Anwendung mit F7 und stappe dann, nachdem du auf Schließen geklickt hast, mit der selben Taste solange durch den Code, bis es crashed. ;)
hkk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 64

Win XP Pro, Win ME, openSUSE 10.2, Ubuntu 7.xx; Firefox 2 (en-US)
D7 Pers, D3 Prof
BeitragVerfasst: So 19.08.07 19:31 
wenn der code schon zu groß ist, kannst du auch bei "verdächtigen" zeilen haltepunkte anlegen, und erst wenn die erreicht sind mit F7 oder F8 zeilenweise weitergehen.

ich hatte letztens eine access-violation, weil eine prozedur während des schließen des formulars noch auf dessen elemente zugegriffen hat (das im allgemeinen ist häufig der fall), weil das nämlich in so etwas wie einem OnChange event passiert ist.
such mal, ob bei dir so was in der art passiert. wenn ja, kannst du das umgehen, indem du eine Boolean variable anlegst, die du im OnCloseQuery Event des formulars auf True setzt und bei den zugreifenden prozeduren abfragst (und sie dann nur fortfahren lässt, wenn die variable False ist)

hoffe, das hilft ^^
~HKK
Uli Schoch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81



BeitragVerfasst: So 19.08.07 19:47 
Salü
In der Anwendung habe ich eine COM-Schnittstelle benützt. Wenn ich diese in der Destroy-Procedure des Hauptformulars schliesse, dann funktionierts, d.h. die Zugriffsveletztung kommt nocht mehr, obwohl beim beenden gar kein Datentransfer läuft. War reine Spekulation, dies zu versuchen.

Danke für die Hilfe
Gruss
Uli