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 :

Survie d'un objet créé dans une fonction


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut Survie d'un objet créé dans une fonction
    Bonjour à tous,

    J'ai un doute...

    Si nous avons une fonction du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function maFonction : integer;
    var
    myquery : TQuery;
    begin
    myquery := TQuery.create(self);
    ...
    ...
    myquery.open;
    exit;
    end;
    Questions :

    1- la table reste t'elle encore ouverte en quittant la function ?
    2- l'objet créé existe t'il encore (même si indisponible) ???

    Merci de vos réponses.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Dans l'exemple de ta fonction, le composant est toujours présent et disponible.
    Tant que tu ne le libère pas, il sera présent (et ouvert dans ton cas).

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Citation Envoyé par Malatar
    Dans l'exemple de ta fonction, le composant est toujours présent et disponible.
    Tant que tu ne le libère pas, il sera présent (et ouvert dans ton cas).
    En fait c'est pire que ça : comme la référence est déclarée dans la méthode, tu vas perdre ta référence vers l'objet! Il ne te sera pas possible de libérer l'objet ou fermer la requête ou faire quoi que ce soit avec. La seule chose positive est que, puisque self a été passé au constructeur comme propriétaire, à la destruction de ce dernier, l'objet TQuery sera aussi détruit.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par slimjoe
    En fait c'est pire que ça : comme la référence est déclarée dans la méthode, tu vas perdre ta référence vers l'objet! Il ne te sera pas possible de libérer l'objet ou fermer la requête ou faire quoi que ce soit avec. La seule chose positive est que, puisque self a été passé au constructeur comme propriétaire, à la destruction de ce dernier, l'objet TQuery sera aussi détruit.
    Avec un Application.components[x], il peut retrouver son composant et le detruire manuellement ou s'en servir (même s'il est vrai que l'utilité est pas terrible)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Merci pour avoir confirmer mes craintes...

    Mais je vais rajouter des myquery.Free avant les exit.

    Meilleurs voeux à tout le monde

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

Discussions similaires

  1. Libération d'un objet créé dans une fonction
    Par zano972 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/10/2014, 17h15
  2. Invocation méthode objet JAVA dans une fonction JAVASCRIPT
    Par makao dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/10/2010, 23h04
  3. [Dojo] Objet Dojo créé dans une fonction et utilisé dans une autre.
    Par hapalemur dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 05/06/2009, 13h59
  4. Réponses: 2
    Dernier message: 20/06/2007, 12h12
  5. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19

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