Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umleitung einer Interface-Methode ? (https://www.delphipraxis.net/150404-umleitung-einer-interface-methode.html)

himitsu 15. Apr 2010 20:20


Umleitung einer Interface-Methode ?
 
Ich weiß, daß es irgendwie ging und hatte es auch schon erfolgreich gemacht, aber ich bekomm es nicht mehr zusammen. :?

Wie kann ich also die Interface-Methode auf eine andersnamige Objekt-Methode umleiten?
Delphi-Quellcode:
type
  INotifier = interface
    procedure Modified;
  end;

  TEditor = class(TInterfacedObject, INotifier, IEditor)
    procedure INotifier.Modified = MyOtherModified;
  end;

procedure TEditor.MyOtherModified;
begin
end;
Der Grund ist einfach, daß 2 Interfaces eine gleichnamige Methode besitzen, aber ich sie dennoch gern im selben Objekt hätte.
Delphi-Quellcode:
type
  INotifier = interface
    procedure Modified;
  end;
  IEditor = interface
    procedure Modified;
  end;

  TEditor = class(TInterfacedObject, INotifier, IEditor)
    procedure INotifier.Modified = MyOtherModified;
    procedure Modified;
  end;

procedure TEditor.MyOtherModified;
begin
end;

procedure TEditor.Modified;
begin
end;

Hawkeye219 15. Apr 2010 20:38

Re: Umleitung einer Interface-Methode ?
 
Hi,

wenn ich mich richtig erinnere, muss die Methodenzuordnungsklausel zusätzlich aufgeführt werden:

Delphi-Quellcode:
TEditor = class(TInterfacedObject, INotifier, IEditor)
  procedure MyOtherModified;
  procedure Modified;
  procedure INotifier.Modified = MyOtherModified;
end;
Gruß Hawkeye

himitsu 15. Apr 2010 20:45

Re: Umleitung einer Interface-Methode ?
 
Zitat:

Zitat von Hawkeye219
zusätzlich

Ahhhhh, jetzt wo du es sagst, fällt es mir wie Schuppen von den Augen.

Danke. :thumb:

uligerhardt 16. Apr 2010 08:59

Re: Umleitung einer Interface-Methode ?
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von Hawkeye219
zusätzlich

Ahhhhh, jetzt wo du es sagst, fällt es mir wie Schuppen von den Augen.

Danke. :thumb:

Sagt ja eigentlich auch der Compiler:
Zitat:

[DCC Fehler] Unit1.pas(55): E2003 Undefinierter Bezeichner: 'MyOtherModified'
:warn: :mrgreen:

himitsu 16. Apr 2010 10:24

Re: Umleitung einer Interface-Methode ?
 
Ja, und mir war so, als wenn der Compiler dieses
Code:
TEditor = class(TInterfacedObject, INotifier, IEditor)
  [b][color=#ff0000]procedure [/color][/b]INotifier.Modified[b][color=#ff0000] = MyOtherModified;[/color][/b]
end;
nicht "richtig" findet und das dies schon als Definition reichen sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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