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 :

Tokyo fmx terminer une application


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut Tokyo fmx terminer une application
    Bonjour,

    mon application se fige de temps en temps avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FreeAndNil(Application);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //    Application.MainForm.DisposeOf;
    //    SharedActivity.Finish;
    ne fonctionne pas.

    quel est la bonne méthode.

    Release dans le Onclose est déprécié.
    Quelle est la bonne méthode ?

    cordialement

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    FreeAndNil(Application); ???????????????????????????????????????

    Jamais vu ça .... L'application se ferme, c'est tout.

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Il n'est pas surprenant qu'en détruisant l'objet responsable de l'application cela coince... Il suffit d'appeler Application.Terminate
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    je voudrais juste attirer votre attention sur le fait qu'en utilisant "Application.Terminate"
    l'évènement "OnClose" n'est pas déclenché que ce soit en VCL ou en FMX

    vous pouvez tester en mettant un "Beep;" dans le "OnClose" de la fiche
    si vous appelez "Application.Terminate" vous n'aurez pas de Bip

    par contre avec "Application.MainForm.Close" on a bien le bip et l'application se ferme proprement.

    Perso j'utilise "Application.Terminate" uniquement en cas de problèmes (pour ne pas enregistrer la config dans le OnClose par Ex.)
    sinon c'est "Application.MainForm.Close" ou simplement "Close" depuis la MainForm

    Du coup je suis très étonné de voir ce genre de code dans le squelette de base d'une MainForm FMx ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.ToolbarCloseButtonClick(Sender: TObject);
    begin
      Application.Terminate;
    end;
    ... et je me pose des questions
    j'aimerais bien avoir votre avis sur le sujet

    Cordialement,
    @+

  5. #5
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut
    Bonsoir

    Close
    Application.Terminate

    fonctionne sur Windows

    avec close l'appli se fige sur Android
    avec Application.Terminate, l'appli disparaît de l'écran mais n'est pas fermée.

    J'ai cherché avant de poser la question, le problème se pose depuis XE5:

    Sur Windows, je n'ai pas de memory lake.

    J'ai aussi du bloquer le harwar back
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      if Key = vkHardwareBack
      then Key := 0;
    là j'avais une violation d'accès à la fermeture après que j'ai passer mon code de fermeture.

    Cordialement

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 041
    Points : 40 950
    Points
    40 950
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    un peu de recherches et l'on trouve aussi la méthode Finish spécifiques à la plateforme.

    je ne fait que des déductions car cela semble dépendre des versions de Delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    uses ... FMX.Helpers.Android ? ou Androidapi.Helpers, Androidapi.JNI.App ? 
     
    // cloture
    SharedActivity.finish;
    A mon avis, il doit aussi y avoir une relation avec ce que le programme fait. Un simple programme sans utilisation de "services extérieurs" se terminera avec un simple Terminate ou Close, c'est s'il y a des appels extérieurs (utilisation de Intents) que ça se corse
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    attention, sur mobile, la durée de vie d'une application n'est pas la même que sur desktop. C'est l'OS qui décide de quand il veux tuer une application pour libérer des ressources, ou s'il préfère la garder en mémoire pour pouvoir la relancer plus rapidement. De même, une application qui passe "en arrière plan" peu très bien être arrêtée par l'OS alors que sous Windows elle continuera à fonctionner tant qu'on ne la ferme pas.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Terminer une application externe.
    Par JJJJJ dans le forum Langage
    Réponses: 14
    Dernier message: 24/12/2009, 13h06
  2. Terminer une application proprement
    Par alain82 dans le forum VB.NET
    Réponses: 6
    Dernier message: 18/08/2009, 15h45
  3. Réponses: 3
    Dernier message: 20/10/2008, 19h52
  4. Réponses: 3
    Dernier message: 07/12/2006, 11h16
  5. [Netbeans] terminer une application
    Par vasilov dans le forum NetBeans
    Réponses: 3
    Dernier message: 14/07/2005, 08h41

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