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 :

FreeOnTerminate libération des variables


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Nillak
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 138
    Par défaut FreeOnTerminate libération des variables
    Bonjour,
    j'en suis à mes débuts en Delphi, mais vraiment au tout début début, et je dois dire que là je sèche un peu.
    Voilà le problème :
    je dois faire une appli qui crée plusieurs threads; jusque là ça va, enfin je crois . Je récupère alors la création des threads dans une liste (FThreadList: TList) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for IName := 1 to FICountThreads do
    begin
      FThreadList.Add(TMyThread.Create(Mes_Parametres));
    end;
    Dans la création de l'objet j'ai mis la propriété FreeOnTerminate := true

    Ce qui implique donc que le thread libère l'espace mémoire dès que l'execution de celui-ci est terminé et qu'il ne sert donc à rien d'utiliser dans mon unit principale WaitFor et Free, seulement voilà, les éléments de la liste ne pointe pas vers nil.

    j'ai lu qu'il fallait que je gère cela dans l'évènement OnTerminate mais je n'ai aucune idée sur la manière de le faire . Faut-il que je cré une procédure, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.TerminerThread(Sender: TObject);
    var
      I: integer;
    begin
      for I := 1 to FICountThreads do
        FThreadList.Items[I-1] := nil;
    end;
    et que je place ça dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for IName := 1 to FICountThreads do
    begin
      FThreadList.Add(TMyThread.Create(Mes_Parametres));
      TMyThread(FThreadList.Items[IName-1]).OnTerminate := TerminerThread;
    end;
    Je pense que ce n'est pas ça, mais je suis un peu perdu, d'où mon post

    Merci d'avance pour vos réponse

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Mis à part ton TerminerThread, tout est bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.TerminerThread(Sender : TObject);
    begin
      FThreadList.Remove(Sender);
    end;
    Et tout ira bien
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre confirmé Avatar de Nillak
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 138
    Par défaut
    Merci à toi ça marche
    je vais maintenant faire l'effort de comprendre et apprendre tout ça
    Encore Merci

Discussions similaires

  1. [Toutes versions] Libération des variables, gain de place ?
    Par FtF Nemesis dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/05/2011, 10h07
  2. Réponses: 4
    Dernier message: 15/12/2002, 04h19
  3. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44
  4. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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