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();


Anmelden zum Antworten