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 :

Interface et héritage


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut Interface et héritage
    Bonjour,

    J'aimerais savoir s'il existe une méthode pour savoir si un objet implemente une interface ou une de ses descendantes. En effet la fonction Supports permet de savoir si un objet implemente une interface et uniquement celle la...


    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
     
    type
      IA = Interface
      ['{4D46A942-4D4B-4EDA-A66D-BACDE1514D53}']
      end;
     
      IB = interface(IA)
      ['{D350D13E-50BC-482A-AAD2-7F54672A4A89}']
      end;
     
      TB = class(TInterfacedObject,IB)
      end;
     
    implementation
     
    procedure TForm1.LogbookButtonClick(Sender: TObject);
    var
      lB : TB;
    begin
      lB := TB.Create;
      try
        if Supports(TB,IA) then      
          Showmessage('supports')
        else
          Showmessage('doesnt support'); // on passe ici
      finally
        lB.Free;
      end;
    end;
    Merci d'avance
    _pirBD_

  2. #2
    Expert éminent sénior

    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 : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Utilise l'opérateur as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var A : IA;
    ...
    try
      A := TB as IA;
      ShowMessage('Supports'); // maintenant on passe là
    except
      ShowMessage('Doesn''t support');
    end;
    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 du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    Chez moi ca marche pas ...

    ton code ne compile pas (operateur non applicable a ce type d'operande sur la ligne A := TB as IA; )

    Le code suivant (inspiré du tien) passe sur doesnt support
    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
     
    procedure TForm1.LogbookButtonClick(Sender: TObject);
    var
      lB : TB;
      lA : IA;
    begin
      lB := TB.Create;
      try
        try
          lA := lB as IA;
          Showmessage('supports');
        except
          Showmessage('doesnt support');
        end;
      finally
        lB.Free;
      end;
    end;
    En tout cas merci pour la reponse.
    De mon coté tant pis je declare toute la hierarchie d'interfaces pour mes objets et je n'ai plus de probleme....
    _pirBD_

Discussions similaires

  1. Une interface avec héritage
    Par abdelilah dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 26/02/2010, 14h37
  2. interface ou héritage ?
    Par richie_himself dans le forum Architecture
    Réponses: 4
    Dernier message: 23/12/2009, 12h04
  3. Interfaces VS héritage
    Par FRED.G dans le forum Général Dotnet
    Réponses: 38
    Dernier message: 17/03/2007, 09h32
  4. [POO] Interface ou héritage ?
    Par s.n.a.f.u dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/03/2007, 01h02
  5. Réponses: 3
    Dernier message: 30/08/2006, 15h35

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