Warum stürzt das Programm immer ab mit einer EAccessViolation und wie kann man dies beheben?
Das Programm läuft super aber nur ohne die ShowMessage im create teil.
Ich benutze die dglOpenGL 1.9
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Kann ich dir sagen. Das ist einfacher als du denkst. OnIdle wird immer dann aufgerufen, wenn deine Anwendung nichts zu tun hat. Im ShowMessage wartet sie auf den Benutzer. Also hat sie nichts zu tun. Somit wird OnIdle aufgerufen. Da du aber noch kein OpenGL initialisiert hast wurde auch noch keine DLL geladen und kein RC angelegt. Dies wird erst geschehen, wenn du InitOpenGL oder CreateRenderContext aufrufst. Also kann er zu dem zeitpunkt noch keine Funktionspointer laden. Was dann zu einer AccessViolation führt, da er versucht eine nicht geladenen Methode aufrufen will.
Unterbinden kannst du das in dem du nach dem Initialisieren von OpenGL ein Boolean setzt und diesen in OnIdle abprüfst.
Die exception im FormCreate tritt auf, weil tief im Aufrufstack von ShowMessage auf die Variable 'Application' zugegriffen wird. Diese ist aber zu diesem Zeitpunkt noch nicht gültig.
Umgehen kannst Du dies. indem du die Message erst im FormShow anzeigst.
Wenn Du sie nur beim ersten mal anzeigen willst, musst Du Dir aber ein Hilfskonstrukt basteln:
in den Private-Abschnitt Deines Formulars die Variable bFirstShow: Boolean einfügen, im FormCreate setzt Du diese dann auf True. Im FormShow kannst du dann Prüfen, ob sie gesetzt ist. Wenn ja, zeigst du die Nachricht an und setzt die Variable auf False.
[edit]alles falsch kommt davon, wenn man antwortet, ohne es selber ausprobiert zu haben [/edit]
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Fiel mir hiterher auch ein Manchmal steht man wirklich so dermaßen auf dem Schlauch, dass man sagt: "Gibt's des?"
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.