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 :

[Interface] Les interfaces seraient-elles détruites automatiquement ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 56
    Points : 63
    Points
    63
    Par défaut [Interface] Les interfaces seraient-elles détruites automatiquement ?
    ,Bonjour,

    J'ai ecris un object qui herite de la classe TInterfacedObject.

    J'ai écris ensuite le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var
      lString : IString;
    begin
      lString := TString.New('Hello');
      lString.PaddingLeft('A',10);
      Showmessage(lString.Value);
    end;
    Mon code s'éxecute correctement, j'ai bien ce que j'attend.
    Ce que j'ai remarqué, c'est qu'a la fin de ma procedure, mon objet est libéré.

    J'ai dont l'impression que ne ne suis alors plus obliger d'appeler explicitement le destructeur (un peu comme dans un language managé).

    Je me demande donc si on peut développer "sans danger" une application qui fonctionnerai en utilisant cette fonctionnalité.

    d'avance merci

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    il me semble bien que les interfaces gèrent un compteur de référence et que lorsque l'objet n'est plus utilisé, il se libère automatiquement
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Effectivement ... il ne faut surtout pas detruire une interface.

    Le principe des interfaces c'est justement de gerer de maniere masquee les objets.

    A chaques affectation de l'interface a une variable de type TInterface, un compteur de reference est incrementé et de meme, decremente lors que la variable de type interface ne pointe plus sur cet objet (libéré ou affecté a nil).

    Pour "detruire" un objet derivant de tinterfaced object, il suffit de mettre a nil toutes les variables interfaces referencant cet objet.

    Je te conseille de faire un test : Cree 3 var de type interfaces qui pointent chacune vers le meme objet interface.

    LEs 3 fonctions definies dans l'interfaces IInterface servent a ca : Ajouter une reference, detruire une reference et demander une interface :p

    Affecte a nil chacune de ces variables depuis 3 bouttons separe et lance un message dans le destructeur de l'objet interfacé.
    Tu verras que quelque soit l'ordre de clic sur les boutons, seul de dernier declanchera le message, preuve de la liberation de l'objet.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

Discussions similaires

  1. [C#] Les interfaces en C# - interet
    Par igorzup dans le forum Windows Forms
    Réponses: 14
    Dernier message: 10/03/2005, 11h01
  2. Réponses: 9
    Dernier message: 03/03/2005, 14h36
  3. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51
  4. à quoit sert les interfaces ?
    Par nytmare dans le forum MVC
    Réponses: 13
    Dernier message: 12/09/2004, 11h57
  5. Réponses: 2
    Dernier message: 31/10/2003, 16h32

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