Zugriffsverletzung : Was läuft falsch
-
Ich benutze OpenGL mit dem BCC.
Sobald ich meine Applikation beenden will (Kreuz am Fenster rechts oben), stürzt das Programm ab und ich bekomme folgende Meldung:"Im Projekt XYZ trat ein Problem mit folgender Meldung auf : Zugriffsverletzung bei 0x8372123b : Lesen von Adresse 0x983747e9f. Prozess angehalten".
Ich habe exit(0); versucht, aber auch dann gibt`s Probleme.
Ich vermute weil OpenGL irgend eine MainLoop() verwendet und ich nicht weiss, was darin passiert.
Wie kann ich also ein Programm sicher beenden, in so einem Fall??
-
Zusatz:
Bei exit(0); kommt folgende Meldung :
"Im Projekt ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: "Eigenschalft Visible kann in OnShow oder OnHide nicht verändert werden. Prozess wurde angehalten".Idee??
-
Hast du "zufällig" in der Ereignisprozedur zu OnShow oder OnHide die Visible-Eigenschaft verändert?
Etwas Code wäre schon sinnvoll, sonst ist das natürlich nur nachvollziehbar wenn man selbst schonmal "Opfer" dieses Fehlers geworden ist.
-
Habe in OnShow und OnHide nix gemacht. Aber es läuft eine Schleife von OpenGL:
glutMainLoop();
Die muss laufen, damit OpenGL funktioniert. Muß das Programm also irgendwie "abwürgen", wenn ich das Fenster schliesse. Gibt`s nicht noch ne deutlichere Sprache wie exit(0); ?? Damit`s auch das letzte Bit kapiert, was ich will??
-
wird diese schleife in nem extra thread ausgeführt? wenn ja, beende den thread
-
Das hört sich nach einem Ansatz an...
Bitte erklär mir noch kurz was du unter einem "Threat" verstehst?
Ich starte dieses glutMainLoop(); unter dem Ereignis "OnCreate" von meinem Formular. Das heisst, sobald das Programm gestartet wird, wird mit glutMainLoop(); openGL gestartet...Hilft dir das in der Diagnose weiter? Gibt es eine bessere Art und Weise, "etwas beim Programmstart auszuführen??"
-
wie wird das gestartet( einfacher Funktionsaufruf oder CreateThread o.ä.) ?
-
Das ist eine Funktion, die wird einfach so gestartet :
glutMainLoop();