AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Systemexception Ursache finden?

Ein Thema von hanspeter · begonnen am 6. Apr 2009 · letzter Beitrag vom 6. Apr 2009
 
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Wie Systemexception Ursache finden?

  Alt 6. Apr 2009, 11:07
Hallo,

ich ärgere ich bereits seit zwei Tagen mit einer Exception herum, die mich langsam in den Wahnsinn treibt.

Das Programm in D2009.

Ich lege in einer SQL-Datenbank einen Gruppenkopf an. Dann importiere ich ein paar Datensätze in die Bewegungsdatei.
Öffne ich jetzt das Bearbeitungsmodul, dann kommt es zu einer Excption immer an der gleichen Stelle. (Fehlermeldung in der Anlage)
Klicke ich die Fehlermeldung weg, dann funktioniert das Bearbeitungsmodul.
Bei allen folgenden Programmstarts funktioniert das Programm dann klaglos.
Wiederhole ich jetzt den Vorgang Datensätze löschen- Neuanlegen, dann kommt beim ersten Start des Bearbeitungsmoduls wieder einmalig der Fehler.

Mit der Datenbank (Firebird) kann es nicht zusammenhängen.
Ich habe vor dem Öffnen des Bearbeitungsmoduls ein Backup erzeugt. Nach dem Auftreten des Fehlers ein Restore. Dadurch wurde dieser nicht
reproduzierbar.

Irgendwie hängen die TMS - ADV Menüs da mit drin.
Ich kann den Fehler fast an beliebiger Stelle im Initialisierungsteil der Datenstruktur durch ein Application.Processmessages auslösen.
Dann rödelt er in den Menümessagesystem.
Meist wird eine Speicherschutzverletzung, manchmal auch ein EInvalidCast angezeigt.
Der Fehler selbst tritt in System.pas immer an der selben Stelle auf.

Delphi-Quellcode:
procedure GetDynaMethod;
{       function        GetDynaMethod(vmt: TClass; selector: Smallint) : Pointer;       }
asm
        { ->    EAX     vmt of class            }
        {       SI      dynamic method index    }
        { <-    ESI pointer to routine  }
        {       ZF = 0 if found         }
        {       trashes: EAX, ECX               }

        PUSH EDI
        XCHG EAX,ESI
        JMP @@haveVMT
@@outerLoop:
        MOV ESI,[ESI]
@@haveVMT:
        MOV EDI,[ESI].vmtDynamicTable
        TEST EDI,EDI
        JE @@parent
        MOVZX ECX,word ptr [EDI] <------ Fehlerstelle
Application.Processmessages in try except Block bringt nichts.

Hat wer eine Idee wo man noch suchen kann?
Für einen Tip dankbar.

Gruß
Peter
Angehängte Grafiken
Dateityp: gif fehler_464.gif (8,3 KB, 9x aufgerufen)
  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 01:42 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