Wie beende ich mein Programm
-
Hallo,
also erstmal Code :
void __fastcall TForm1::FormCreate(TObject *Sender) { // *************** // * Main Modul * // *************** // Parameter auswerten int anzParameter = ParamCount(); String Parameter; if (anzParameter != 1) { Application->Terminate(); } Parameter = LowerCase(ParamStr(1)); //... }
Das funktioniert aber nicht. Wenn ich wirklich in anzParameter einen Wert ungleich 1 habe springt er mir zwar in den if Block hinein, beendet das Programm aber nicht. Auch exit(0) funktioniert nicht. Es gibt immer eine MessageBox aus : "Abnormal Programm Termination". Das kann es ja auch nicht sein.
Wer weiss Hilfe ?
Gruß
PsiAgent
-
Close();
???
-
Tja, was sagt man dazu: Es gibt eine ganz einfache Funktion zum Beenden:
Close();
Oder Ausführlich geschrieben:
Form1->Close();
Edit: Mist, schonwieder zu lahm
-
Hi,
hoffe habe dich richtig verstanden, wenn das dein Hauptfenster ist, schliesse es doch einfach mit:
Close();
Hoffe konnte dir helfen.
-
Bei mir funktioniert das Application->Terminate(); aber auch und ich würd das auch bevorzugen ... hab BCB 6 Enterprise
Wobei ich sagen muss es nicht wirklich guter stil ist in einem Konstruktor den Destruktor aufzurufen ..
-
Bau die Abfrage am Anfang der WinMain-Funktion deines Programmes ein (Project|View Source).
Wenn die Bedingung nicht erfüllt ist kannst du gleich zum return springen.
-
Close funktioniert leider auch nicht, Programm springt einfach weiter.
-
Svenson schrieb:
Close funktioniert leider auch nicht, Programm springt einfach weiter.
hast du in diesem Teil hier :
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
irgendwelchen Source Code stehen ??
-
Das hat funktioniert . Danke !!! Wieso die anderen Befehle versagen istr mir jedoch schleierhaft.
Danke !!!
-
Hmm... Darauf muss man erstmal kommen.
-
steht .. auch in der BCB Hilfe nen Hinweis dazu
quote :Hinweis: Das Ereignis OnCreate sollte in C++Builder nicht verwendet werden, da es zu Konflikten mit dem Formularkonstruktor führen kann (siehe OldCreateOrder). Es wird empfohlen, statt dessen den Formularkonstruktor entsprechend zu überschreiben.
edit :
problem hat ich auch schonmal .. Wenn man nämlich den Formular Konstruktor leer lässt .. dann geht FormCreate aber wenn in beidem was steht reagiert der C++ builder seltsam ..
-
1ntrud0r schrieb:
Svenson schrieb:
Close funktioniert leider auch nicht, Programm springt einfach weiter.
hast du in diesem Teil hier :
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
irgendwelchen Source Code stehen ??
nein habe ich nicht. Sollte dort Programmcode stehen ?
Danke
-
Da müsste das Application->Terminate() aber ohne probleme Funktionieren auch ohne es in die WINMAIN zu schreiben ..
jedoch ist die Lösung von Jansen vom Stil her besser .
-
Manchmal ist man gezwungen OnCreate oder OnAktivate zu benutzen und anhand irgend welcher bedingungen Formular/Application doch dann noch zu beenden.
Wie schon gesagt funzt da Close() oder Application->Terminate() nicht
in sio einem fahll nutze ich folgende kostruktion:
if (irgendwas_ist_fasch_und_prog_mus_beendet_werden) { PostMessage(Handle, WM_CLOSE, 0, 0); // Close(); return; }
funtzt immer.
-
Danke !!!