AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Runtime Error 217 beim Beenden des Programmes?
Thema durchsuchen
Ansicht
Themen-Optionen

Runtime Error 217 beim Beenden des Programmes?

Offene Frage von "winx"
Ein Thema von winx · begonnen am 15. Aug 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

Runtime Error 217 beim Beenden des Programmes?

  Alt 15. Aug 2006, 09:47
Hi,

ich habe ein ziemlich großes Programm von Delphi 7 nach Delphi2006 (Win32)
konvertiert und soweit wieder zum Compilieren gebracht.

Nun hab ich noch folgendes Prob:
Immer wenn ich das Programm beende (also das erstellte nich den Compiler)
- ich habe dabei nur das Programm erstellt und SOFORT wieder geschlossen -
bekomme ich folgenden Fehler:

Runtime Error 217 at 00404A65

Hab dann mal das Tool MadExcept verwendet, was mir folgende Ausgabe liefert:

madExcept version : 3.0b
callstack crc : $0389dd53, $aea8a62f, $aea8a62f
exception number : 1
exception class : EInvalidPointer
exception message : Ungültige Zeigeroperation.


main thread ($820):
00404a71 +011 Mark.exe System 184 +0 TObject.FreeInstance
00404e62 +002 Mark.exe System 184 +0 @ClassDestroy
0049e9a1 +029 Mark.exe Themes TThemeServices.Destroy
00404ab4 +008 Mark.exe System 184 +0 TObject.Free
0049f5a0 +028 Mark.exe Themes Finalization
004056a9 +039 Mark.exe System 184 +0 FinalizeUnits
0044dc0c +054 Mark.exe madExcept InterceptFinalizeUnits
0040595a +056 Mark.exe System 184 +0 @Halt0
006a18ae +2fe Mark.exe Mark 149 +39 initialization

thread $db0:
7c91eb94 +00 ntdll.dll KiFastSystemCallRet
7c91e397 +0a ntdll.dll NtReplyWaitReceivePortEx
0044e5e1 +0d Mark.exe madExcept CallThreadProcSafe
0044e64b +37 Mark.exe madExcept ThreadExceptFrame
>> created by main thread ($820) at:
77e6760d +00 RPCRT4.dll

thread $b70:
7c91eb94 +00 ntdll.dll KiFastSystemCallRet
7c91d85a +0a ntdll.dll NtDelayExecution
7c8023e7 +4b kernel32.dll SleepEx
7c80244c +0a kernel32.dll Sleep
0044e5e1 +0d Mark.exe madExcept CallThreadProcSafe
0044e64b +37 Mark.exe madExcept ThreadExceptFrame
>> created by main thread ($820) at:
774dcc4a +00 ole32.dll

thread $c10 (TIdUDPListenerThread):
7c91eb94 +00 ntdll.dll KiFastSystemCallRet
7c91e9be +0a ntdll.dll NtWaitForSingleObject
71a0150a +6a WS2HELP.dll WahReferenceContextByHandle
71a12e64 +a4 WS2_32.dll select
0044e6ff +2b Mark.exe madExcept HookedTThreadExecute
0044e5e1 +0d Mark.exe madExcept CallThreadProcSafe
0044e64b +37 Mark.exe madExcept ThreadExceptFrame
>> created by main thread ($820) at:
0225db87 +00 netmark.dll

modules:
00400000 Mark.exe N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
02240000 netmark.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
023d0000 dls2D.dll 1.0.0.1 N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
02490000 vgpsflow.dll 6.1.4.0 N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
026d0000 vgflow.DLL 6.1.4.0 N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
02cb0000 pdf2image.dll 2.0.0.1 N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
02ea0000 cimage.dll 5.9.9.1 N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
03330000 vsArgillon.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
033c0000 vsDate.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
034d0000 VSEXCEL.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
03a10000 VSFILE.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
03bb0000 vsForm.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
03d20000 vsSerial.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
10000000 Dlsbar32.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
20000000 xpsp2res.dll 5.1.2600.2180 C:\WINDOWS\system32
5b0f0000 uxtheme.dll 6.0.2900.2180 C:\WINDOWS\system32
66710000 hnetcfg.dll 5.1.2600.2180 C:\WINDOWS\system32
68e00000 vroni.dll N:\develop\Mark V 1.80 Delphi 2006 Testversion\Compiled
719b0000 mswsock.dll 5.1.2600.2180 C:\WINDOWS\system32
719f0000 wshtcpip.dll 5.1.2600.2180 C:\WINDOWS\System32
71a00000 WS2HELP.dll 5.1.2600.2180 C:\WINDOWS\system32
71a10000 WS2_32.dll 5.1.2600.2180 C:\WINDOWS\system32
71a30000 wsock32.dll 5.1.2600.2180 C:\WINDOWS\system32
72f70000 winspool.drv 5.1.2600.2180 C:\WINDOWS\system32
746a0000 MSCTF.dll 5.1.2600.2180 C:\WINDOWS\system32
76350000 comdlg32.dll 6.0.2900.2180 C:\WINDOWS\system32
76970000 SXS.DLL 5.1.2600.2180 C:\WINDOWS\system32
76af0000 winmm.dll 5.1.2600.2180 C:\WINDOWS\system32
76f90000 CLBCATQ.DLL 2001.12.4414.308 C:\WINDOWS\system32
77010000 COMRes.dll 2001.12.4414.258 C:\WINDOWS\system32
770f0000 oleaut32.dll 5.1.2600.2180 C:\WINDOWS\system32
773a0000 comctl32.dll 6.0.2900.2180 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9
774b0000 ole32.dll 5.1.2600.2726 C:\WINDOWS\system32
77bd0000 version.dll 5.1.2600.2180 C:\WINDOWS\system32
77be0000 msvcrt.dll 7.0.2600.2180 C:\WINDOWS\system32
77d10000 USER32.dll 5.1.2600.2622 C:\WINDOWS\system32
77da0000 ADVAPI32.dll 5.1.2600.2180 C:\WINDOWS\system32
77e50000 RPCRT4.dll 5.1.2600.2180 C:\WINDOWS\system32
77ef0000 GDI32.dll 5.1.2600.2818 C:\WINDOWS\system32
77f40000 SHLWAPI.dll 6.0.2900.2937 C:\WINDOWS\system32
77fc0000 Secur32.dll 5.1.2600.2180 C:\WINDOWS\system32
7c800000 kernel32.dll 5.1.2600.2945 C:\WINDOWS\system32
7c910000 ntdll.dll 5.1.2600.2180 C:\WINDOWS\system32
7c9d0000 shell32.dll 6.0.2900.2951 C:\WINDOWS\system32


So nun versuchte ich das irgendwie zu analysieren, aber leider krieg ich den Fehler nicht weg.

Hoffe dass mit irgendjemand helfen kann...


Danke,
winx

P.S: Hab das Thema auch hier gepostet, da es ziemlich dringend ist:
Forum
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Runtime Error 217 beim Beenden des Programmes?

  Alt 15. Aug 2006, 10:53
Hi,
ein bisschen glücklicher wäre es ja, wenn du das Programm rangehangen hättest. Dann könnte man doch leichter sehen, wo du was machst (und ggf. mit dem Debugger rüberlaufen).
Hast du das denn mal gemacht? Also im Debugmodus gestartet? Und wo genau taucht dann der Fehler auf?

Also jetzt rein von der Fehlermeldung klingt es nach einem Free, dass auf einer bereits freigegebenen Varialbe aufgerufen wird. Vielleicht wurde sie auch einfach nie initialisiert, aber das sollte dann nur für lokale Variablen gelten!
Du müsstest also schauen, welche Destruktoren aufgerufen werden und ob hier irgendwo etwas freigegeben wird, was du ohne irgendeinen anderen Aufruf noch nicht initialisiert hast.
Warum es bei einer anderen Delphi-Version nicht kracht erklärt das zwar nicht direkt, aber nicht initialisierte Werte sind zufällig, können also auch 10.000 mal zufällig schon nil sein, bevor es einmal zum Fehler kommt!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#3

Re: Runtime Error 217 beim Beenden des Programmes?

  Alt 15. Aug 2006, 11:58
Hi,

ich hab schon mnal gedebuggt und der fehler trat hier auf:

Delphi-Quellcode:
begin

  Application.Initialize;
  ...
  Application.CreateForm(Ttoolformdistributeangle, toolformdistributeangle);
  Application.Run; // Hier alles OK
end. // <- Nachdem ich hier F8 gedrückt habe (beim Debuggen) tritt der fehler auf
Hab nochmal FASTMM verwendet und dies zeigt die Fehlermeldung im Anhang...

Hat es irgendwas mit der Klasse TThemeService zu tun? Ist halt ne Borland KLasse, oder????

Gibt es ein Tool, das solche Fehler im Programme erkennt, also nichtinitialiserte Variablen, die freigegeben werden?

danke,
winx
Angehängte Grafiken
Dateityp: jpg mm_175.jpg (137,9 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Runtime Error 217 beim Beenden des Programmes?

  Alt 15. Aug 2006, 18:04
Zitat von winx:
ich hab schon mnal gedebuggt und der fehler trat hier auf:

Delphi-Quellcode:
begin

  Application.Initialize;
  ...
  Application.CreateForm(Ttoolformdistributeangle, toolformdistributeangle);
  Application.Run; // Hier alles OK
end. // <- Nachdem ich hier F8 gedrückt habe (beim Debuggen) tritt der fehler auf
Nun ja, dass ist schon klar, aber an irgendeiner Stelle wird halt ein TThemeService Objekt explizit freigegeben (.free oder .destroy), das aber schon freigegeben wurde (oder nie initialisiert). Nach FastMM wurde es ja schon explizit freigegeben. Es kann sein, dass du hier einerseits den Owner zugewiesen hast und andererseits irgendwo .free aufgerufen wird.

Zitat von winx:
Hat es irgendwas mit der Klasse TThemeService zu tun? Ist halt ne Borland KLasse, oder????
TThemeService sagt mir als Klasse nichts, weiß nicht ob die von Borland kommt oder nicht, hat aber damit nichts zu tun.
Du solltest dir einfach mal alle Instanzen dieser Klasse in deinem Projekt anschauen. Wird irgendwo Free oder Destroy von diesen Klassen aufgerufen?
Wenn du eine Komponente auf dem Form platzierst (zur Designzeit) oder manuell erstellst (zur Laufzeit) und einen Owner zuweist, so sorgt der Besitzer selbst für die Freigabe. Wird der Owner freigegeben, wird für alle bekannten Kinder deren Free aufgerufen. Dabei wird zwar die Instanz frei gegeben, dass Objekt also aus dem Speicher entfernt, die Adresse aber nicht geändert. In einer Variable von einem Klassentyp wird nur die Adresse des Objekts im Speicher gespeichert. Ist diese nicht nil (0x00000000), so denkt Delphi dass dieses Objekt noch existiert. Ja, wurde es schon mit Free freigegeben hast du also ein Problem.

Zitat von winx:
Gibt es ein Tool, das solche Fehler im Programme erkennt, also nichtinitialiserte Variablen, die freigegeben werden?
Ja, der Delphi-Compiler. Du solltest beim Compilieren eine Liste mit Hinweisen und Warnungen bekommen, wenn es mögliche Schwachstellen in deinem Code gibt. Hier findest du auch, dass eine Variable möglicherweise nicht initialisiert wurde.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Runtime Error 217 beim Beenden des Programmes?

  Alt 15. Aug 2006, 18:17
Hallo winx,

solche Fehler zu finden ist nicht so einfach. In Solchen Fällen kommentiere ich meinst alles aus bis der Fehler weg ist und aktiviere dann Stück für Stück die Programmteile wieder. Mit alles meine ich hier die initialization und finalization Blöcke der Units (wenn vorhanden) und in der Hauptunit die FormCreate, FormClose und FormDestroy Events. Wenn das Projekt noch weitere Formulare beim Programmstart initalisiert, sind es natürlich noch mehr Events.

Gruss
Thorsten
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#6

Re: Runtime Error 217 beim Beenden des Programmes?

  Alt 16. Aug 2006, 08:43
Hi,

nachdem ich jetzt alles soweit auskommentier habe, hab ich festgestellt, dass
es an einer in einem Form verwendeten VirtuslStringTree Kompo liegt.

Weil ich diese nun debuggen wollte, hab ich mal dem Pfad angeguckt und dabei
gesehn, dass in meinem Projektsuchpfad noch der Pfad zur "alten" in D7
verwendeten vorhanden war. Den hab ich entfernt und
FEHLER weg!!!!

Juhu!!!!

Gruß,
winx
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz