![]() |
dynamischer Aufruf von Interface-Methoden
Hallo,
ich beschäftige mich gerade mit Delphi-Interfaces. Dabei habe ich Schwierigkeiten, die Methoden der implementierten Interfaces eines Objektes aufzurufen, wenn dieses Objekt einer Variablen zugewiesen ist, die das Interface nicht implementiert. Ich habe folgendes Interface erstellt:
Delphi-Quellcode:
Wenn ich versuche, folgendes zu kompilieren, erhalte ich die
unit Unit2;
interface type IInterface1 = interface ['{5FD5F41E-E71F-41B2-946B-5A06404E74FF}'] function getName: string; end; TKlasseA = class(TInterfacedObject, IInterface1) function getName: string; end; implementation function TKlasseA.getName: string; begin result := 'Klasse A'; end; end. Fehlermeldung "E2015 Operator ist auf diesen Operandentyp nicht anwendbar":
Delphi-Quellcode:
Hat jemand eine Idee, wie man die Methode getName für das
procedure TForm1.Button1Click(Sender: TObject);
var myObject: TObject; begin myObject := TKlasseA.Create; Button1.Caption := (myObject as IInterface1).getName; end; Objekt myObject korrekt aufruft? Gruss, Martin |
Re: dynamischer Aufruf von Interface-Methoden
Delphi-Quellcode:
(funktioniert aber nur bei Interfaces mit GUID {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee})
procedure TForm1.Button1Click(Sender: TObject);
var myObject: TObject; myIntf : IInterface1; begin myObject := TKlasseA.Create; If Supports(myObject,IInterface1,myIntf) Then Button1.Caption := myIntf.getName; end; |
Re: dynamischer Aufruf von Interface-Methoden
Funktioniert super. Vielen Dank!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz