![]() |
Re: InterfaceTable eines Interfaces?
Zitat:
Gruß Hagen |
Re: InterfaceTable eines Interfaces?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
über die PTypeInfo^ und TypInfo.GetTypeData(PTypeInfo)^ kommst du an den Namen der Interfaces und auch an alle aufrufbaren Methoden samt Parametern.
function FindTypeInfo(const AGUID: TGUID; AModule: LongWord = allModules): PTypeInfo; overload;
Gruß hagen PS: hoffe das du meine Unit nicht in deine Sourcecode Formatierung (wenn man es so bezeichnen möchte) umbaust ;););) |
Re: InterfaceTable eines Interfaces?
Nochwas ist mir aufgefallen
Delphi-Quellcode:
du gibts in diesen Methoden einen "komplexen" Datentyp zurück. Das ist bei Interfaces eher unerwünscht. Normalerweise sollte man Interface so konstruieren das sie HResult zurückgeben oder Bool um anzuzeigen das die Funktion fehlgeschlagen oder nicht fehlgeschlagen ist. Komplexere Datentypen gibt man bei Interfaces als Parameter -> out -> zurück. Dies ist nun kein "muß" und Ausnahmen bestätigen die Regel aber es ist eine sinnvolle Designrichtlinie. Ja ich weis das dann indizierte Properties nicht möglich sind, was ich bei Interfaces ohne Sichtbarkeitskapselungen per private/protected etc.pp. eh als sinnlose Erfindung der Bolandianer erachte. Sogesehen empfinde ich deine Konstruktion per indizierter Property -> ITGetItem() etc.pp. als dem Interface-Konzept widersprechend. Interfaces sollen eigentlich ausschließlich nur das deklarieren was public sichtbar sein soll. Deine .GetItem() Methode ist aber eine implementierende Schnittstelle und müsste normalerweise unsichtbar im Interface sein. Da dies Borland aber nicht bei Interfaces unterstützt halte ich es für besser komplett auf dieses Property-Sprachkonstrukt bei Interfaces zu verzichten. Das macht die Schnittstelle letzendlich kompakter, übersichtlicher und somit besser wartbar. Anders ausgedrückt: weniger ist manchesmal mehr, man muß nicht jedes mögliche Sprachkonstrukt benutzen ;)
Function ITGetItem( Index: Integer ): TGUID; StdCall;
Function ITGetRefItem( Index: Integer ): TGUID; StdCall; Gruß Hagen |
Re: InterfaceTable eines Interfaces?
Erstmal danke für deine ausführlichen Antworten! Muss erstmal alles überblicken...
Zitat:
Zitat:
Zitat:
:duck: Zitat:
Und bis auf die 2 Wortdreher im Code ist er auch absolut genau der Lösungsansatz den ich gesucht hatte, von daher nochmal danke :spin: Im Grunde war mein Teil nur ein kleiner Ergebnissbericht, falls nochmal jemand damit arbeiten mag und keine Lösung findet... Ich hab ewig gesucht und nix gefunden =( Nungut, ich werd mir das mit dem Interface Namen nachher noch näher anschauen. Bye Christian :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 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