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
 
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
 


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 14:37 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