Autor |
Beitrag |
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Fr 12.10.07 10:01
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
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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?
_________________ We are, we were and will not be.
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Fr 12.10.07 10:17
Tipps:
(a) Klasse zweimal freigegeben
(b) dyn. Array außerhalb des Range zugegriffen
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Jakob_Ullmann 
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 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 ...
_________________ 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.
|
|
|