AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi COM: Wie bekomme ich das Objekt hinter einem Interface

COM: Wie bekomme ich das Objekt hinter einem Interface

Ein Thema von ulrich.b · begonnen am 21. Feb 2008 · letzter Beitrag vom 22. Feb 2008
 
ulrich.b

Registriert seit: 21. Sep 2005
Ort: Kattau (AT)
79 Beiträge
 
Delphi 2009 Professional
 
#1

COM: Wie bekomme ich das Objekt hinter einem Interface

  Alt 21. Feb 2008, 00:18
COM Server

Zum einen habe ich eine Daten Klasse

Delphi-Quellcode:
  TDaten = class(TAutoObject, IDaten)
  private
    FGekapselt: TGekapselt;

  protected
    function Get_A: Integer; safecall;
    procedure Set_A(Value: Integer); safecall;

    function Get_obj_ptr: Pointer; safecall;

  public
    property Gekapselt: TGekapselt read FGekapselt;

  end;
Und zum anderen eine Klasse mit einer Methode, die einen Pointer auf dieses Interface als Parameter hat

Delphi-Quellcode:
  TAndereKlasse = class(TAutoObject, IAndereKlasse)
  protected
    function DoSomething(const Daten: IDaten): Integer; safecall;
  end;

Nun möchte ich innerhalb von DoSomething nicht nur auf die Interface Member, sondern auf das Objekt dahinter (die TDaten Instanz) zugreifen (Bevor ihr wieder alle fragt warum: Um an gekapselte Daten ranzukommen, wie ichs mit dem public Property angedeutet hab).

Gibts da igendeine schöne möglichkeit, um an den Pointer ranzukommen??

Ich hab es nämlich so gelöst:

Delphi-Quellcode:
function TDaten.Get_obj_ptr: Pointer;
begin
  Result := Self;
end;
Zugriff auf die Instanz:

Delphi-Quellcode:
function TAndereKlasse.DoSomething(const Daten: IDaten): Integer;
var
  DatenInstanz: TDaten;
begin
  DatenInstanz := TDaten(Daten.obj_ptr);
end;
Ich exportiere über das Interface einfach eine Methode, die den Objektpointer nach außen liefert. Gibt es hierfür schönere Lösungen? Können durch meine Implementierungen Probleme entstehen?
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:29 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