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 :

Objet et liberation de mémoire ...


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut Objet et liberation de mémoire ...
    Dans mon code source, j'utilise souvent le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TObject.MaProcedure();
    var
      qry :TQuery
    begin
      try
        [...]
      except
        [...]
      end;
    end;
    Lorsqu'on sort de cette procedure, la variable qry n'est pas plus utilisable, est ce que l'objet TQuery est toujours en mémoire ou pas ?

    Normalement je devrais libérer la mémoire moi meme il me semble mais je suis pas sur
    Et aussi est ce qu'il y aurait moyen de faire qqch du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
       [...]
    except
       [...]
    finally
       [...]
    end;
    Merci pour votre aide

  2. #2
    Membre habitué

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Salut,

    Pour ta première question, hors de ta procédure, ta variable n'est pas accessible puisqu'elle est locale... Pour la deuxième, la bonne méthode est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    procedure TObject.MaProcedure(); 
    var 
      qry :TQuery 
    begin 
      qry := TQuery.Create(nil);
      try 
        try
          [...]   
        except 
          [...] 
        end; 
      finally
        qry.Free;
      end;
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Oki merci
    Je savais bien que la variable n'etait plus accesible ... mais je ne savais pas si ca libérais la mémoire utilisé par ce TQuery

    J avais pas pensser a mettre un try dans un autre try

    Mais j ai encore une question .. si j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      try
        try
          [...]
          Raise .....
          [...]
        except
          [...]
        end;
      finally
        qry.Free;
      end;
    Est ce que le code dans le bloc finally sera executer si jamais je "Raise" une exception ??

  4. #4
    Membre habitué

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Oui, le finally est exécuté (on serait pas dans la merde sinon...)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    merci pour ces petites précisions

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

Discussions similaires

  1. Liberer la mémoire rapidement
    Par freerider74 dans le forum VB.NET
    Réponses: 13
    Dernier message: 09/02/2009, 22h33
  2. liberer la mémoire
    Par clod83 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 03/01/2008, 16h56
  3. Réponses: 4
    Dernier message: 29/11/2007, 02h52
  4. Comment liberer la mémoire vive svp ?
    Par arnofly dans le forum Windows Forms
    Réponses: 21
    Dernier message: 22/08/2007, 23h23
  5. liberation de mémoire
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 30/01/2006, 19h28

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