AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Interface aus bestehenden Klassen erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Interface aus bestehenden Klassen erstellen

Ein Thema von fisipjm · begonnen am 19. Mai 2023 · letzter Beitrag vom 22. Mai 2023
 
fisipjm
Online

Registriert seit: 28. Okt 2013
345 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interface aus bestehenden Klassen erstellen

  Alt 19. Mai 2023, 15:07
Da ich aber eigentlich so gut wie immer die Delphi eigenen klassen verwende, sowas wie Tinifile oder TRegistry, kann ich diese ja nicht von einem IInterfacedObject ableiten. WIe stell ich das an, für bestehende Klassen ein Interface zu erstellen? Oder muss ich immer eine eigene KLassenableitung erstellen? Ich hoffe die Frage ist nicht zu Kindergarten, aber meine bisherige Websuche hat mich irgenwie nicht wirklich schlauer gemacht
Dazu habe ich vor vielen Jahren mal was geblogt:

Zitat:
Die Alternative könnte wie folgt aussehen:

Man deklariere eine von TInterfacedObject abgeleitete Wrapper-Klasse, welche die lästige Basisimplementation von IUnknown übernimmt und die darüber hinausgehende Implementation von ISomeInterface an TSomeClass delegiert:

Delphi-Quellcode:
type
  TSomeWrapper = class(TInterfacedObject, ISomeInterface)
  protected
    fSomeClass: TSomeClass;
    property SomeClass: TSomeClass read fSomeClass implements ISomeInterface;
  public
    constructor Create(_SomeClass: TSomeClass);
    destructor Destroy; override;
  end;

...

constructor TSomeWrapper.Create(_SomeClass: TSomeClass);
begin
  inherited Create;
  fSomeClass := _SomeClass;
end;

destructor TSomeWrapper.Destroy;
begin
  fSomeClass.Free;
  inherited;
end;
Benutzt wird dieses Objekt wie folgt:

Delphi-Quellcode:
var
  SomeInt: ISomeInterface;
...
  SomeInt := TSomeWmapper.Create(TSomeClass.Create);
  SomeInt.Method1;
...
Man erzeugt also eine Instanz von TSomeWrapper, übergibt ihr eine ebenfalls frisch erzeugte Instanz von TSomeClass, und verwendet sie als ob es sich um eine auf magische Weise auch von TInterfacedObject abgeleitete Version von TSomeClass handelte, weist sie z.B. auf eine Variable vom Typ ISomeInterface zu. Reference-Counting natürlich inklusive.
http://www.dummzeuch.de/delphi/objec...%20L%C3%B6sung

Hey Dumuzeuch,

das ist ja echt schon ewig her. Da sieht man mal was es alles aufzuholen gilt
Deine Lösung gefällt mir gut, ich versuch mal mein Glück. Danke!
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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