Προς το περιεχόμενο

Τροποι τερματισμού εφαρμογής C++


Leite33

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα

Θέλω να ρωτήσω... Στη C++ εκτος απο τους παρακα΄τω τρόπους υπάρχει κάποιος άλλος να τερματίσω μια εφαρμογή;

 

->Application->Terminate();

->TerminateProcess(GetCurrentProcess(), 0);

->Form1->Close();

 

Ευχαριστω

Δημοσ.

Κανένας από τους τρόπους που αναφέρεις δεν είναι C++. Ο πρώτος και ο τρίτος είναι Builder/VCL, ο δεύτερος WIN32 API.

 

Στη C/C++ έχουμε την exit (normal termination) και την abort (abnormal termination - χρησιμοποιείται από την assert).

 

Σε περιβάλλον C++ Builder ή/και Windows, έχουμε καμιά 10αριά, εξαρτάται από το τι ακριβώς ζητάς.

Δημοσ.

Ναι ο πιο απλός τρόπος είναι ένα return. Μπορείς να χρησιμοποιήσεις την exit, η οποία αν δεν κάνω λάθος πέρνει και το 0 σαν παράμετρο; Ας το επιβεβαιώσει κάποιος να σιγουρευτούμε.

Δημοσ.

return και exit είναι για φυσιολογική εξοδο από το προγραμμα με το αντίστοιχο κωδικό επιστροφής η abort από την άλλη κανει raise και ένα signal που δείχνει abnormal program termuination ( δεν θυμάμαι ποιο ).

 

Y.Γ.: η exit παιρνει int σαν παράμετρο ( δηλαδή και το 0 )

Δημοσ.

Ναι αυτό εννούσα απλά αν δεν κάνω λάθος βάζουμε το 0 όταν το πρόγραμμα τερματίζετε φυσιολόγικά και κάτι άλλο όταν τερματίζετε πρόωρα.

Δημοσ.

Ναι συγνωμη έχετε δικιο.. Σε περιβαλλον C Builder ζητάω.. Σε απλές εφαρμογές που τρέχουν σε windows

Δημοσ.

Είτε θα χρησιμοποιήσεις την Close της κεντρικής φόρμας σου, είτε θα χρησιμοποιήσεις την TApplication->Terminate, αυτοί είναι οι δυο νόμιμοι τρόποι τερματισμού. Από εκεί και πέρα ακολουθούν οι τρόποι του WinAPI και των standard C libraries, οι τρόποι αυτοί όμως δεν κλείνουν οπωσδήποτε πετυχημένα την εφαρμογή (αποδέσμευση μνήμης, κλήση των TForm destructors & OnClose events κτλ) οπότε καλό είναι να τους αποφεύγεις όταν δουλεύεις με την VCL.

 

Υ.Γ.

Αν δεν σε καλύπτουν τα Terminate και Close της VCL, τότε υποπτεύομαι ότι η εφαρμογή σου έχει σχεδιαστικό σφάλμα και καλό είναι να την αναθεωρήσεις.

Δημοσ.

Γεια σου Directx.. Οχι δεν έχει σφάλμα απλώς ήθελα να δω αν υπάρχουν άλλοι τρόποι θεωρητικά και πρακτικα.. Ευχαριστώ Νομίζω καλύφθηκα

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...