AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Grund für Runtime Error 216 finden
Thema durchsuchen
Ansicht
Themen-Optionen

Grund für Runtime Error 216 finden

Ein Thema von MartinK · begonnen am 9. Nov 2014 · letzter Beitrag vom 10. Nov 2014
Antwort Antwort
MartinK

Registriert seit: 21. Jun 2009
Ort: Germering (Germany)
89 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 09:28
Mein Programm zeigt mir seit einer Umstellung von normalen Arrays auf ein Array auf einen RecordTypen beim Beenden jedesmal einen RT Error 216 (Adresse 00409472)
ich weiß, Dank dem Debugger, auch dass der Fehler in der unit System in der proceudre FinalizeUnits auftritt
Aus einigen Threads hier im Forum ebenso das vermutlich ein generiertes Objekt nicht richtig freigegeben wird und beim beenden weiterer Formulare zu dem Fehler führt.

Mit diesen Aussagen kann ich nur leider den Fehler nicht finden, da ich nicht weiß wie ich dabei vorgehen soll.
Wie macht man denn so etwas?

LG Martin
Martin Kuhn
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 09:38
Kompiliere dein Projekt mit System Debug-Units und setze einen Breakpoint auf das 'END.' der Hauptanwendung. Dann führe den Rest Schrittweise aus. im FinalizeUnits wird der FinalisierungsCode aller Units nacheinander aufgerufen. In einer davon knallt es. Mit 'schrittweiser Ausführung' findest Du dann die Stelle.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 10:20
Der Fehler tritt oft auch auf, wenn ein Objekt doppelt freigegeben wird.

Sehr einfach sollte solch ein Fehler mit FastMM zu finden sein.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 10:44
Stimmt, mit FastMM sollte man anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 11:54
Benutzt du Packages?

Sind bei dir Units möglichst immer im Interface eingebunden (uses) oder auch zu oft grundlos in Implementation?


Wenn man da z.B. Objektreferenzen ungünstig verwaltet und dann z.B. noch nach dem freigeben der Unit oder eines Packages benutzt, dann dann das schnell mal knallen.
Beim "externen"/großen FastMM kann man einige FullDebug-Features einbinden, wo man auch doppelte Freigaben und (schreibende) Speicherzugriffe nach dem Freigeben erkennen lassen kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
MartinK

Registriert seit: 21. Jun 2009
Ort: Germering (Germany)
89 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 13:05
Danke euch zunächst schon mal

na dann werde ich mal mit FastMM starten, denn beim debuggen merke ich nur "das" es "knallt" und nicht wieseo
Martin Kuhn
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 15:08
Wenn Du mit Arrays arbeitest, kann es auch sinnvoll sein, zu Debugging-Zwecken mal die Bereichsüberprüfung einzuschalten. Array-Grenzen zu verletzen kann zu viel späteren Zeitpunkten für Probleme sorgen.
  Mit Zitat antworten Zitat
MartinK

Registriert seit: 21. Jun 2009
Ort: Germering (Germany)
89 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 16:43
@Teebee: DAs war "DER" Tipp.

Ich hatte 2 Stellen "Schreibfehler" im Sourcecode die mir früher nie aufgefallen sind.
Durch die bereichsüberprüfung fielen diese bereits beim Programmstart auf ... wurden korrigiert
und damit war ich auch den RT Error 216 los.

Dickes danke dafür !
Die Bereichsprüfung ist ab sofort stanbdardmässig auf "on"
Martin Kuhn
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#9

AW: Grund für Runtime Error 216 finden

  Alt 9. Nov 2014, 17:04
Die Bereichsprüfung ist ab sofort stanbdardmässig auf "on"
Würde ich beim Release rausnehmen, macht die Anwendung langsamer (muss nicht spürbar sein) und größer.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Grund für Runtime Error 216 finden

  Alt 10. Nov 2014, 01:22
RT 216 ist eine Access Violation. Also in der Regel ein Zugriff auf einen ungültigen Speicherbereich. Kann bei dynamischen Arrays durch eine Unachtsamkeit schnell passieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 19:54 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