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 :

Créer une instance de classe


Sujet :

Delphi

  1. #1
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut Créer une instance de classe
    Bonjour

    j'aimerai créer une instance d'une classe dans une unité, je sais qu'il faut utiliser
    initialization & finalization, mais je ne sais pas comment le faire.

    Merci

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    unit test;
     
    interface
     
    Type
     Tmaclasse = class
      private
        fnom : string;
        fPronom : string ;
      public
        constructor Create;
        destructor Destroy;
        procedure Clear(fre: tmaclasse) ;
        property nom : string read fnom write fnom;
        property Pronom  : string read fPronom write fPronom;
     end;
     
     
     
    implementation
     
      constructor tmaclasse.Create;
      begin
      end;
     
      destructor tmaclasse.Destroy;
      begin
      inherited destroy ;
      end;
     
      procedure tmaclasse.Clear(fre : tmaclasse ) ;
      begin
     
        fnom := '';
        fPronom := '';
     
      end;
     
    end.

  2. #2
    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
    Sauf erreur de frappe, ça doit être ça.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    unit test;
     
    interface
     
    Type
     Tmaclasse = class
      private
        fnom : string;
        fPronom : string ;
      public
        constructor Create;
        destructor Destroy;
        procedure Clear(fre: tmaclasse) ;
        property nom : string read fnom write fnom;
        property Pronom  : string read fPronom write fPronom;
     end;
     
    
    var
      MonObjet: TMaClasse; 
    
    implementation
     
      constructor tmaclasse.Create;
      begin
      end;
     
      destructor tmaclasse.Destroy;
      begin
      inherited destroy ;
      end;
     
      procedure tmaclasse.Clear(fre : tmaclasse ) ;
      begin
     
        fnom := '';
        fPronom := '';
      
      end;
     
    
    initialization
      MonObjet := TMaclasse.Create;
    finalization 
      MonObjet.Free;
    
    end.

  3. #3
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    Merci
    et puis comme je fais l'appel depuis une autre Classe ?

  4. #4
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    c'est bon merci, je fais appel à MonObjet directement ;

    merci encore

  5. #5
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    une tout dernière question
    Comment on fait via une méthode de classe pour le même exemple.

    Merci

  6. #6
    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
    Une méthode de classe est indépendante de ce cas, vu qu'il n'y a pas besoin d'une instance de classe.

    Déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class procedure MaMethode;
    Exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TMaClasse.MaMethode;

  7. #7
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    Désolé mais j'ai pas compris
    je suis parti de cette exemple

    Citation Envoyé par ShaiLeTroll Voir le message
    tu peux instancier la variable dans la partie initialization genre

    quelque part dans l'unité (je pense juste après implementation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var
      _Singleton: TBidule = nil; // voir si le Create est possible ici avec les nouvelles versions, en D7 faut constante
    ------ METHODE VIA INITIALIZATION/FINALIZATION ------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    initialization
      _Singleton := TBidule.Create();
     
    finalization
      if Assigned(_Singleton) then
      begin
        _Singleton.Free();
        _Singleton := nil;
      end;
    ------ METHODE VIA METHODE DE CLASSE ------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    type
      TBidule = class(TMachin)
        class function Singleton: TBidule;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class function TBidule .Singleton: TBidule;
    begin
      if not Assigned(_Singleton) then
        _Singleton := TBidule.Create();
     
      Result := _Singleton;
    end;

  8. #8
    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
    Dans ce cas là, je pense que c'est pour utiliser le Singleton momentanément, ça donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    MonSingleton := TBidule.Singleton;
    try
    //
    ... du code
    //
    finally
      MonSingleton.Free; // Pas nécessaire si le singleton doit persister.
    end;

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/02/2010, 15h49
  2. Réponses: 4
    Dernier message: 09/05/2008, 20h20
  3. Comment créer une liste ou une instance de classe dans une fonction ?
    Par Neolander dans le forum Général Python
    Réponses: 9
    Dernier message: 05/03/2008, 19h22
  4. Réponses: 5
    Dernier message: 09/03/2007, 21h14
  5. [Débutant] Créer une instance avec le nom d'une classe
    Par Quetzalcoatl dans le forum Langage
    Réponses: 7
    Dernier message: 23/01/2006, 20h43

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