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 :

problème utilisation interfaces delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Par défaut problème utilisation interfaces delphi
    Bonjour,

    je bute sur un problème lié à l'utilisation des interfaces sous delphi.

    Ex :
    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
     
    type
      IInterfaceTest = interface
      end ;
     
      TTest = class(TInterfacedObject, IInterfaceTest )
      end ;
     
    function TraiterObjetParInterface(UnIInterfaceTest : IInterfaceTest) ;
    begin
      // faire des choses avec UnIInterfaceTest 
    end ;
     
    procedure MaFonctionDeTest ;
    var
      UnTest : TTest ;
    begin
       UnTest := TTest.Create ;
     
       TraiterObjetParInterface(UnTest) ;
        // arrivé ici, l'objet UnTest est déjà détruit !!!
     
    end ;
    Voila, je ne voudrais pas qu'il me détruise mon objet.
    Bien sur, je pourrai appeler _Addref pour eviter la destruction, n'existe-t-il pas un moyen plus correct d'utiliser les interfaces tout en gardant le controle de l'objet ?

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Par défaut
    J'ai trouvé quelqu'un ayant le meme problème, malheureusement, il a du abandonner

    http://www.developpez.net/forums/showthread.php?t=6627

  3. #3
    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
    Au lieu d'hériter de TInterfacedObject, écris toi-même _AddRef et _DeleteRef, de façon à... ne rien faire ^^
    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.

  4. #4
    Membre averti
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Par défaut
    Merci pour l'info, je viens de tester, ca a l'air de marcher.

    Il suffit donc de :


    déclarer votre classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TTest = class(TObject, IInterfaceTest )
     
      protected
         function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
         function _AddRef: Integer; stdcall;
         function _Release: Integer; stdcall;
     
      end ;
    et de rien mettre dans ces fonctions

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Oublies pas le tag

  6. #6
    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
    Citation Envoyé par desperado
    et de rien mettre dans ces fonctions
    Mettre tout de même un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result := E_NoInterface;
    dans la première et un
    dans les deux autres, hein
    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.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/10/2013, 13h03
  2. Problème utilisation interface
    Par wafiwafi dans le forum Général Java
    Réponses: 7
    Dernier message: 26/06/2012, 09h20
  3. Réponses: 1
    Dernier message: 30/01/2011, 17h38
  4. Problème utilisation Dll créée en delphi dans une appli VB6
    Par Djelangelo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/01/2011, 15h48
  5. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26

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