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 :

Application->Terminate et OnClose, OnCloseQuery


Sujet :

C++Builder

  1. #1
    Membre �prouv�

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par d�faut Application->Terminate et OnClose, OnCloseQuery
    Bonjour � tous,

    je rencontre un "petit" probl�me avec C++ Builder.
    Sur ma fen�tre j'ai un bouton qui permet de quitter
    gestionnaire OnClick :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Application->Terminate();
    J'ai aussi �cris du code dans le gestionnaire OnClose. Or si j'�x�cute en pas-�-pas et que je met un point d'arr�t dans le code de ce gestionnaire je n'y passe jamais !!! (bien entendu j'ai essay� en quittant l'application via mon bouton).

    Suite � certains posts que j'avais lu j'ai tent� de d�placer ce code dans OnCloseQuery.
    Idem je n'y passe jamais.

    Du coup j'ai tent� de forcer la fermeture, le code de mon bouton quitter est donc devenu :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    MainForm->Close();
    Application->Terminate();
    .
    Dans ce cas je passe bien par le code qui doit �tre execut� � la fermeture, mais j'ai un access violation dans Forms.hpp sur la ligne du destructeur de TForm...

    J'avoue y perdre mon C++....quelqu'un a-t-il d�j� rencontr� un probl�me similaire ?

    Merci d'avance pour votre aide !

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Bonjour,
    ph�nom�ne �trange
    en principe il suffut simplement d'un appel a
    le resultat sera l'appel de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    FormCloseQuery
    // la variable CanClose permet de déterminer la suite de l'action
    // Valeur possible false --> pas de fermeture,
    //                 true ---->poursuite de la destruction de la Form
    //     
    FormClose() // si CanClose =true;
    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  3. #3
    Membre �prouv�

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par d�faut
    Ben oui je sais tout �a...d'o� mon incompr�hension du prob�me !
    Est ce que c'est le pas-�-pas qui bug ? Les points d'arr�ts ?

  4. #4
    Membre �prouv�

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par d�faut
    A priori il vaudrait mieux fermer la fen�tre principale (qui est celle sur laquelle je travaille) plut�t que de faire un Application->Terminate();

    J'ai donc fait cela, mis le programme me plante toujours � la fermeture sur cette ligne de Forms.hpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
    Il me fait un access violation � une adresse du style 0x000000C25.
    Je ne comprend pas �a marchait bien...et l� plus

  5. #5
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    La form que tu veux fermer dans ton programme est-elle ouverte dans l'IDE quand tu d�buggues ??
    Le probl�me pourrait venir de l�, Borland se m�langeant (peut-�tre) les pinceaux dans la fermeture de la form.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  6. #6
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Citation Envoy� par Neilos
    A priori il vaudrait mieux fermer la fen�tre principale (qui est celle sur laquelle je travaille) plut�t que de faire un Application->Terminate();
    Je crois Application->Terminate() ne s'utilise qu'exceptionnellement, c'est une sortie brutale dont on a besoin dans certains cas de rupture imm�diate, on utilise pour une sortie normale Close() ou Form1->Close() si vous �tes � l'ext�rieur de la classe principale.

    Dans votre cas, il doit y avoir une erreur ailleurs mais comme on ne conna�t pas la structure de votre application ni ses fonctions principales, il est difficile de vous aider.

    � bient�t
    Gilles

  7. #7
    Membre �prouv�

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par d�faut
    Eh beh moi qui utilisait avec plaisirs le
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Application->Terminate();
    Par contre pour ce qui est de d�crire mon application, ben c'est le PowerBench qui est dans ma signature. Je le fais �voluer l� et depuis peu j'ai ce probl�me.

    Ce qui m'emb�te c'est que j'ai un Access Violation mais que Code Guard ne dit rien

    Edit : une petite piste.
    Il faut savoir que l'exception intervient APRES l'execution de la ligne
    du fichier principal du projet (celui g�n�r� et g�r� par Borland).

    De plus dans ma fen�tre principal j'ai une barre de titre virtuelle, donc j'ai cela dans mon code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    BEGIN_MESSAGE_MAP
          MESSAGE_HANDLER ( WM_NCHITTEST, TMessage, WMNCHITTEST );
       END_MESSAGE_MAP ( TForm );
    Par contre mettre le code ci-dessus en commentaire ne r�soud pas le probl�me.

    Et le pire c'est qu'apr�s l'execution du
    return 0; il passe encore une ou deux fois par le BEGIN_MESSAGE_MAP...avant de finir sur la ligne o� �a plante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }

  8. #8
    Membre �prouv�

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par d�faut
    Bon apparement �a proviens d'une modif faite par une fonction appel�e par mon code dans le OnClose. Je n'ais pas encore trouv� laquelle mais que je met l'appel � cette fonction en commentaire �a marche.

    Merci encore pour votre aide, je marque ce sujet r�solu puisque le probl�me est maintenant quasiement identif�.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Communication entre application et terminal
    Par JaroBx dans le forum G�n�ral Java
    R�ponses: 2
    Dernier message: 01/07/2010, 11h18
  2. Ma premi�re application est termin�e
    Par cad13 dans le forum Mon application mobile
    R�ponses: 6
    Dernier message: 01/03/2010, 22h46
  3. thread terminate destroy onclose onclosequery
    Par ouiouioui dans le forum Langage
    R�ponses: 7
    Dernier message: 13/01/2010, 20h11
  4. R�ponses: 3
    Dernier message: 14/06/2008, 22h36
  5. R�ponses: 3
    Dernier message: 07/12/2006, 11h16

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