Entwickler-Ecke

Sonstiges (Delphi) - Laufzeitfehler 216 beim Beenden


Jakob_Ullmann - Fr 12.10.07 10:01
Titel: Laufzeitfehler 216 beim Beenden
Hallo!

Ich bekomme beim Beenden bzw. nach dem Beenden meines Programms immer zwei Meldungen. Die erste ist eine EExternalException, die andere weiß auf einen Runtime error 216 hin. Ich habe schon gesucht, bei Google kommt nicht das Richtige, bei Wikipedia steht nichts, was mir helfen könnte und mit der Suchen-Funktion habe ich nur einen Beitrag von vor 3 Jahren gefunden, aus dem ich aber auch nicht schlau werde. Weiß jemand, woran das liegen könnte? Oder kennt jemand typische Gründe? Ich hab's mit anderen Programmen getestet, bei den kam es nicht, also kann es an Windows oder an Delphi nicht liegen. Bitte helft mir!


Gausi - Fr 12.10.07 10:13

Setz mal Breakpoints um herauszufinden, an welcher Stelle die Exceptions auftreten. 216 ist ja ne AccessViolation - gibts du evtl. einige Objekte zu früh frei?


Kroko - Fr 12.10.07 10:17

Tipps:

(a) Klasse zweimal freigegeben
(b) dyn. Array außerhalb des Range zugegriffen


Jakob_Ullmann - Fr 12.10.07 10:24

Danke für eure Tipps!
@Gausi: Habe schon tausende von Breakpoints gesetzt, der Code ist einfach viel zu riesig.
@Kroko: a) könnte stimmen. b) Ich habe keine dynamischen Arrays drinne, nur statische (heißt doch so, oder?).

Jedenfalls funktioniert es jetzt aus unerklärlichen Gründen. Ich habe nur mal ein paar Units aus der Uses-Klausel rausgeschmissen. Plötzlich ging es. Danke trotzdem!


BenBE - Fr 12.10.07 10:48

Du kannst wenn Du Dir von Delphi eine MAP-File anlegen lässt, die Error-Adressen der besagten beiden Fehlermeldungen mit Suche in der Entwickler-Ecke OMMAP in Zeilennummern auflösen lassen.

Ach ja: Bei statischen Arrays gilt b auch ... Sogar noch wichtiger, weil Du da schnell mal Memory-Overwrites (AKA Buffer Overflows) reinbekommst ...