Zugriffsverletzung bei Application->CreateForm



  • Hallo Leute,

    brauche mal wieder Eure Hilfe:
    Ich habe ein Projekt, an dem ich seit Jahren rumprogrammiere (dementsprechend groß ist es auch!)
    Seit Kurzem läuft jedoch nichts mehr, an der Stelle

    Application->CreateForm(...)
    

    der Project.cpp gibt es folgende Fehlermeldung:

    Im Projekt sdiapp.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004DA5FF. Schreiben von Adresse C04DB4CB'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

    Jedoch habe ich davor nicht eine einzelne Codezeile abgeändert (Eigenleben?!)
    Das OnCreate der Form habe ich komplett auskommentiert, ohne Erfolg.
    Welche Gründe kann es haben, dass plötzlich nichts mehr funktioniert?

    MfG Chris_



  • Hallo

    Auch der Konstruktor des Forms, das mit CreateForm erstellt wird, wird dabei aufgerufen, nicht nur OnCreate (dieser Event sollte sowieso nie verwendet werden, mehr dazu erklärt dir die Suchfunktion hier im Forum). Der Auslöser kann aber alles mögliche sein, also benutze den Debugger um den Auslöser weiter einzugrenzen.

    bis bald
    akari



  • Wirklich merkwürdig dieses Eigenleben 😕 !

    Plötzlich bekomme ich die selbe Zugriffsverletzung eine Zeile weiter, bei:

    Application->Run()
    

    Leider lässt sich der Fehler auch mit Debuggen nicht weiter eingrenzen als auf diese Funktion.
    Generell ist das Verhalten des BCB seit Kurzem sehr merkwürdig:
    Beispielsweise werden manchmal (und nur manchmal!) 2 Programminstanzen gleichzeitig gestartet, wovon sich eine dann nicht mehr beenden lässt.

    Ich weiß, dass es dafür 1000 Gründe geben könnte, aber hat vielleicht noch jemand eine Idee?

    MfG Chris_



  • Chris_ schrieb:

    Plötzlich bekomme ich die selbe Zugriffsverletzung eine Zeile weiter, bei:

    Application->Run()
    

    Leider lässt sich der Fehler auch mit Debuggen nicht weiter eingrenzen als auf diese Funktion.

    So wie es aussieht, setzt du keinen Haltepunkt im betreffenden Formular-Code? Nur in der Projekt-Datei?

    Hast du die Builder-Version gewechselt?



  • So wie ich das verstanden habe, wird dabei der Konstruktor und das OnCreate-Event der Form aufgerufen
    (bitte berichtigt mich, wenn ich mich irre!).
    Da beide leer (bzw. auskommentiert) sind, kann ich dort keine Haltepunkte setzten.
    Application->Run() ist doch die Haupt-Nachrichtenschleife der Anwendung, oder?
    Bis jetzt habe ich die Haltepunkte im CPU-Fenster gesetzt. Beim ersten Assembler-Befehl, der bei Application->Run() aufgerufen wird, erhalte ich die Fehlermeldung.

    Die BCB-Version habe ich nicht gewechselt, ich habe wie gesagt gar nichts verändert 😕

    MfG Chris_



  • Danke an alle!

    Die Sache hat sich erledigt.
    Ich weiß jedoch trotzdem noch nicht, an was es lag.
    Ich habe einfach die Zeile

    #include "EigenerHeader.hpp"
    

    auskommentiert und gleich wieder rückgängig gemacht: Es funktioniert wieder! 😮
    Der Builder und sein Eigenleben 😃

    MfG Chris_



  • Hallo

    Bei solchen unerklärlichen Problemen hilft auch die Menüoption Projekt/<Projektname> erzeugen. Das beseitigt alle möglicherweise veralteten temporären Dateien und erstellt alles auf Basis des Quellcodes neu.

    bis bald
    akari



  • Auch das hatte ich schon versucht.
    Das Ganze ist mir wirklich unerklärlich 😕

    MfG Chris_



  • Kann es denn vorkommen,
    dass eine solche Zugriffsverletzung durch eine doppelte Namespace-Deklaration ausgelöst wird?

    Wenn es so ist, habe ich den Fehler wahrscheinlich gefunden.

    MfG Chris_


Anmelden zum Antworten