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

Langage Delphi Discussion :

Rien ne ferme mon application


Sujet :

Langage Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    538
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 538
    Points : 122
    Points
    122
    Par défaut Rien ne ferme mon application
    Bonjour à tous.

    J'ai une procedure Quitter qui implémente ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            Application.Terminate;
            Form1.Close;  // DEBUG parce que Terminate ne ferme pas tjrs !!
            Form1.CloseQuery;
    Tout ça parce que cette f*** Application.Terminate ne veut pas fermer l'aplication, ni les autres instructions !

    A part HALT; il n'y a aps une fa_on radicale de fermer une application ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    1) première erreur : ne jamais appeler les variables de fiche dans leur classe elle même.

    2) attention à l'ordre des déclarations, Close et CloseQuery ne s'appel pas dans cette ordre et encore moins les deux en même temps.

    3) Application.Terminate appel les form.Close et les Form.Close declenche les CloseQuery.


    pour fermer une application deux methodes seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFormPrincipale.ButtonQuitterClick(Sender: TObject);
    begin
      Close;
    end;
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFormQuelconque.ButtonQuitterClick(Sender: TObject);
    begin
      Application.MainForm.Close;
    end;
    si tu utilise l'evenement OnCloseQuery, tu doit signifier en fin d'evenement que CanClose soit égal à true.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TFormQuelconque.FormQuelconqueCloseQuery(Sender: TObject; var CanClose: boolean);
    begin
      CanClose := false;
      { traitement }
      CanClose := True;
    end;

    si ton programme ne ferme pas par ces méthodes, c'est que tu as un problème sous-jacent, avec un composant, un traitement, un thread, un objet dynamique mal libéré qui empêche la fermeture, un bug dans le source du projet, des manipulations hazardeuses avec les fiches et le tapplication, des erreurs grossières de programmation dans les fiches, des evenements mal déclarés.

    pense également à nettoyer régulièrement le projet, fichier DCU, EXE, CFG, DOF, IdentCache, *.~*.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    538
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 538
    Points : 122
    Points
    122
    Par défaut
    1/ Ah ! Bon ? On ne doit jamais écrire Application.Terminate; ??

    2/ Oui. Il y a des bugs : mais précisément, ce que je cherche, c'est une méthode radicale pour fermer une application. La procédure Quitter est appelée, et elle a beau contenir tout ça et même ton code, rien à faire, elle ne se ferme pas ! Si j'emploie halt; : ça fait des erreurs en mémoire ? Tout est parfaitement désalloué, j'ai vérifié.

    C'est simplement un pb tout bête de procédures qui continuent leurs traitements malgré l'appel à Quitter(). Tout ça à cause de bcp d'événementiel.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 273
    Points
    13 273
    Par défaut
    Citation Envoyé par bvsud Voir le message
    Si j'emploie halt; : ça fait des erreurs en mémoire ? Tout est parfaitement désalloué, j'ai vérifié.
    Si sous Seven, oui ! La mémoire est purgée à la fin du processus. Sinon, les fuites seront inévitables.

  5. #5
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    oui il y'a beaucoup de chose qu'on ne doit pas faire sous delphi.

    pourrait tu si possible nous montrer le code complet de ton programme.
    on trouvera surement l'erreur dedans.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    538
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 538
    Points : 122
    Points
    122
    Par défaut
    AnBotOr => C'est bon à savoir.

    Dr Who => Ca y est. ca marche. Et avec une fermeture propre du programme. J'ai corrigé. Effectivement, c'était programmé un peu lourd

Discussions similaires

  1. Mon application ne se ferme pas
    Par Jennifer75a dans le forum Android
    Réponses: 3
    Dernier message: 11/11/2014, 03h54
  2. [Débutant] [C#] Mon Thread ferme mon application
    Par quentin869 dans le forum C#
    Réponses: 2
    Dernier message: 10/03/2012, 19h54
  3. Faire en sorte que le bouton Home ou Back ferme mon application
    Par samzk dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 23/06/2011, 09h48
  4. Réponses: 5
    Dernier message: 20/05/2008, 20h14
  5. mon application ne se ferme pas completement
    Par smail21 dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/09/2005, 15h15

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