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

Delphi Discussion :

form toujours allouée avec un release


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut form toujours allouée avec un release
    Bonjour,

    J'ai une form que je créer dynamiquement :

    ECR_CALENDRIER := TFECR_CALENDRIER.Create(Nil);
    Lorsque je cloture cet écran :

    ECR_CALENDRIER.Release ;
    lorsque que je rappel mon calendier

    je constate que ECR_CALENDRIER <> nil par contre tous les composants de cette fiche son bien à nil ???

    Auriez vous une idée

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut
    BONJOUR,

    faut il utiliser FreeAndNil(ECR_CALENDRIER) ?

    Cordialement

  3. #3
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    La form est bien libérée mais le pointeur est toujours sur l'ancien emplacement mémoire.

    Le FreeAndNil est déconseillé pour une Form, il y a plusieurs discussions là-dessus sans avoir vraiment de raisons autre que le conseil de Borland, il me semble (peut-être le traitement des messages)

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par Linkin
    Le FreeAndNil est déconseillé pour une Form, il y a plusieurs discussions là-dessus sans avoir vraiment de raisons autre que le conseil de Borland, il me semble (peut-être le traitement des messages)
    C'est exactement ça: Release permet de terminer tous les messages destinés à la fiche avant de la détruire.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut
    bonjour,

    j'ai trouvé un autre solution :

    My_Form.Release;
    My_Form := Nil;
    Je n'ai plus de problème, par contre cela ne semble pas propre.

    qu'en pensez-vous ?

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Citation Envoyé par QAYS
    Je n'ai plus de problème, par contre cela ne semble pas propre.
    Je ne vois pas pourquoi Rien n'empêche de mettre nil à une variable
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut
    Citation Envoyé par QAYS
    bonjour,

    j'ai trouvé un autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    My_Form.Release;
    My_Form := Nil;
    Je n'ai plus de problème, par contre cela ne semble pas propre.

    qu'en pensez-vous ?
    Citation Envoyé par Pedro
    Je ne vois pas pourquoi Rien n'empêche de mettre nil à une variable
    Salut!

    Il y a 2 notions à saisir ici.

    Release() est une méthode qui indique à Windows que la fiche n'est plus utilisée et que la mémoire peut êre libérée. Windows, quand bon lui semble, détruit alors la fiche et indique à ton application de détruire ce qu'elle contient.

    Toutefois, ce n'est pas parce que l'objet qu'est la fiche a été détruit que le pointeur (la variable Form1, ou My_Form dans ton exemple) se voit soudainement vidé. Même si l'instance de la fiche est détruite en mémoire, la variable contient toujours l'adresse originale de cette dernière. Donc, comme le précise Pedro, c'est une bonne chose, dans ta situation, que de vider ta variable après avoir détruit ton objet. Perso, je ne trouve pas que cette technique manque de propreté. Si tu as besoin de tester l'état de My_Form c'est la meilleure chose à faire à mon avis.

    Bon dev!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/11/2007, 12h59
  2. isset() toujours vrai avec $_POST
    Par mrttlemonde dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2006, 10h33
  3. Form + input text avec espace
    Par psykbe dans le forum Langage
    Réponses: 3
    Dernier message: 23/02/2006, 14h22
  4. Forms 6i : erreur avec FORMS_DDL
    Par Veve44 dans le forum Oracle
    Réponses: 3
    Dernier message: 22/02/2006, 14h22
  5. [C#] Définir le forme de démarrage avec SharpDevelop
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/10/2004, 10h52

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