IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Terminate() qui ne terminate pas


Sujet :

C++Builder

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut Terminate() qui ne terminate pas
    Bonjour, lors de la création d'une de mes fiches, si j'ai un problème, j'aimerai sortir du programme directement (equivalent à exit(0)) donc stopper imédiatement la création des autres fiches. J'utilise cette fonction de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->Terminate();
    mais lorsque je passe sur cette ligne, le programme ne s'arrête pas et visiblement il ne se passe rien puisque les fiches suivante sont créer (mais vu qu'une erreur s'est produite, j'enchaine exception sur exception).

    - Est-ce que j'utilise mal la fonction Terminate() ? Dans l'aide, si j'ai bien compris je dois sortir directement de mon application.

    - Si j'utilise mal cette fonction, quel est l'équivalent de la fonction exit(0); ? Si je passe sur exit(0); j'ai une exception dans mon prog.

    A bientôt, et merci d'avance.

  2. #2
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    Je connais pas Terminate()
    Mais cela ca n'ira pas dans ton cas ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application->Close();

  3. #3
    Membre habitué Avatar de Furlaz
    Homme Profil pro
    Responsable Qualité
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Qualité
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 131
    Points
    131
    Par défaut
    En fait je crois que je dis n'importe quoi

  4. #4
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Conernant, les termes Terminate, Close ...

    voir : http://www.developpez.net/forums/showthread.php?t=146961

    lanonyme

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut EAccessViolation
    Voilà, finalement, Terminate() n'est pas assez violent, alors j'utilise Abort() qui au final me créé quand même une série d'exception. Plus exactement, si je sors dans la première fiche créer par Abort() alors je n'ai pas de problème, l'application se termine sans faire d'histoire, c'est super. Par contre si c'est la deuxième, je ne sais pas pourquoi mais une exception est levée (EAccessViolation, un truc comme ça parceque j'ai lu à une adresse interdite $40) et cette exception se déclenche plusieurs fois.

    Imaginons que la deuxième forme créé s'appelle form2. Dans celle-ci je vais placé le code suivant, permettant de fermer "proprement" la première forme, form1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (bigError == true) 
    {
     form1->Close(); // j'ai essayé avec un form1->Release() aussi.
     Abort();
    }
    Mais j'ai quand même une erreur, pourtant théoriquement cette forme est détruite.

    Je ne comprends pas lorsque la ligne Terminate() est lue, le programme continue a créer les formes qui ne l'ont pas encore été.

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    tu peux aussi faire
    Ca marche très bien.

Discussions similaires

  1. Aide pour terminer un code qui ne fonctionne pas
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/02/2013, 16h29
  2. Option "Lancer dans le terminal" qui ne fonctionne pas avec Konsole
    Par Dr Rodney Mckay dans le forum Qt Creator
    Réponses: 0
    Dernier message: 19/01/2013, 15h40
  3. GNOME Terminal qui plante
    Par Franck.H dans le forum Shell et commandes GNU
    Réponses: 19
    Dernier message: 10/08/2007, 11h30
  4. [csv]import qui ne termine jamais
    Par banzzai dans le forum Requêtes
    Réponses: 6
    Dernier message: 14/06/2006, 21h07
  5. Un thread de travail qui se termine et se libère tout seul
    Par bigquick dans le forum Threads & Processus
    Réponses: 15
    Dernier message: 24/06/2005, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo