Programmfehler
-
Hallo,
Sobald ich mein Programm mit exit(EXIT_SUCCESS); beende erscheint folgender Fehler:
Project xxx.exe raised exception class EOSError with message System Error. code: 5 access error. Process stoped.
Was mache ich falsch?
Ich verwende in dem Programm Threads, die ich aber voher eigentlich alle beende!...mein Ziel ist es, dass ich mein Programm aus einem Thread durch ne Funktion beende und ich dachte mir, dass man es mit der exit(EXIT_SUCCESS); Funkion gut machen könnte...
MfG
TheCaleb
-
Hallo
exit dürfte dafür nicht richtig sein, das ist noch eine alte c-Funktion.
Verwende lieber Application->Terminate();bis bald
akari
-
Hi, danke aber diese Funktion beendet das Programm nicht!
Bzw das Fenster bleibt offen und die Funkiton TForm1::FormDestroy wird auch nicht aufgerufen.
-
Hallo
Das kann ich mir nicht vorstellen. Es sei denn du fängst manuell irgendwo die WM_CLOSE-Messages von Windows ab oder verwendest die OnCloseQuery-Events eines Forms um CanClose auf false zu setzen.
Siehe auch BCB-Hilfe zu Terminate(). Oder erstell mal ein leeres Projekt und setzt nur einen Button mit dieser Codezeile rein.bis bald
akari
-
Hmmm du hast Recht, wenn ich das einfach nur bei einem Button mache, in einem neuen Projekt, klappt das aber sobald ich das aus nem Thread machen möchte klappt das nicht, leider!
Und sowelche Funktionen, wie du ansprichst, nutze ich nicht.
-
Gibt es vielleicht eine andere Möglichkeit das Programm, bzw den Thread durch eine Funktion zu schließen?
-
Dann wäre das einfachste wohl, eine Botschaft aus dem Thread an das Hauptform zu senden.
Im Thread:
PostMessage(Form1->Handle, CM_REQUESTTERMINATION, 0, 0);Im MainForm:
// .h #define CM_REQUESTTERMINATION (WM_APP + 400) // im public-Bereich des MainForms: void __fastcall CMRequestTermination(TMessage Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_REQUESTTERMINATION, TMessage, CMRequestTermination); END_MESSAGE_MAP (TForm) // .cpp void __fastcall TForm1::CMRequestTermination(TMessage Message) { // Eventuelle Aufräumarbeiten durchführen Close(); } //---------------------------------------------------------------------------
-
Vielen Dank, das hat mir weiter geholfen!
MfG
TheCaleb