Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Referenz auf Interface-Methode (https://www.delphipraxis.net/193158-referenz-auf-interface-methode.html)

Relicted 28. Jun 2017 11:26

Referenz auf Interface-Methode
 
Hallo zusammen,

folgendes Problem: ich würde gerne eine Referenz auf eine Methode (ohne Parameter) eines Interfaces an eine Klasse weitergeben.
Mit der "procedure of object"-Methodik geht das wohl leider nicht. Jemand eine Idee wie man das bewerkstelligen kann?

Der schöne Günther 28. Jun 2017 11:48

AW: Referenz auf Interface-Methode
 
Entweder stehe ich genau so feste wie du auf dem Schlauch oder da blockt tatsächlich irgendetwas. Ich würde den Typ von "procedure of object" zu "reference to procedure" ändern, das ist in
Delphi-Quellcode:
System.SysUtils
bereits als
Delphi-Quellcode:
TProc
vordefiniert. Dass ergibt mittels anonymer Prozedur zwar etwas Overhead, aber dein Gedöns müsste somit noch nicht einmal das Interface implementieren.

Delphi-Quellcode:
uses System.SysUtils;

type
   IMyInterface = interface
      procedure doStuff();
   end;

   TMyObject = class(TInterfacedObject, IMyInterface)
      procedure doStuff();
   end;

procedure TMyObject.doStuff();
begin
   WriteLn('I''m doing stuff');
end;

var
   instance: IMyInterface;
   procedureReference: TProc;
begin
   instance := TMyObject.Create();

   procedureReference := TMyObject(instance).doStuff;

   procedureReference :=
      procedure()
      begin
         instance.doStuff;
      end;
end.

Mavarik 28. Jun 2017 11:57

AW: Referenz auf Interface-Methode
 
Ich würde entweder das ganze Interface übergeben oder die Methode als Interface erzeugen und dein Interface von diesem Interface ableiten oder die Implementation von beiden Interfaces...

freimatz 28. Jun 2017 12:22

AW: Referenz auf Interface-Methode
 
Zitat:

Zitat von Relicted (Beitrag 1375541)
Mit der "procedure of object"-Methodik geht das wohl leider nicht. Jemand eine Idee wie man das bewerkstelligen kann?

Nimm die "reference to ...."- Methodik.

(Siehe auch: https://stackoverflow.com/questions/...d-reference-to)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz