![]() |
Runtime Error 217 beim Beenden des Programmes?
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: ![]() |
Re: Runtime Error 217 beim Beenden des Programmes?
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 |
Re: Runtime Error 217 beim Beenden des Programmes?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich hab schon mnal gedebuggt und der fehler trat hier auf:
Delphi-Quellcode:
Hab nochmal FASTMM verwendet und dies zeigt die Fehlermeldung im Anhang...
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 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 |
Re: Runtime Error 217 beim Beenden des Programmes?
Zitat:
Zitat:
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:
|
Re: Runtime Error 217 beim Beenden des Programmes?
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 |
Re: Runtime Error 217 beim Beenden des Programmes?
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 :lol: :lol: :lol: :lol: :lol: :lol: :lol: FEHLER weg!!!! Juhu!!!! Gruß, winx |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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