AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

InterfaceTable eines Interfaces?

Ein Thema von Kedariodakon · begonnen am 7. Mär 2007 · letzter Beitrag vom 14. Mär 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#11

Re: InterfaceTable eines Interfaces?

  Alt 13. Mär 2007, 18:14
Zitat:
Ich hab mir das noch ein wenig zusammengestutzt, rausgekommen ist das:
(Falls nochmal jemand sowas brauch)
Sorry, aber aus meiner Sicht sieht dein Source "schei.." formatiert aus Was hast du denn gegen meinen Vorschlag einzuwenden ? Ich meine das er sauberer, kompakter und im Grunde mit wenig Funktionalität exakt ds macht was du brachst. Naja, ist aber Ansichtssache, so wie eben die Formatierungen im Source.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#12

Re: InterfaceTable eines Interfaces?

  Alt 13. Mär 2007, 18:24
Zitat:
Nur richtig schön wäre es nun noch den passenden Namen zu haben (der In Delphi verwendet wird z.b. IInterface), falls man da überhaupt rann kommt...
Auch das geht. Nehme die Unit im Attachment und benutze die Funktion

function FindTypeInfo(const AGUID: TGUID; AModule: LongWord = allModules): PTypeInfo; overload; über die PTypeInfo^ und TypInfo.GetTypeData(PTypeInfo)^ kommst du an den Namen der Interfaces und auch an alle aufrufbaren Methoden samt Parametern.

Gruß hagen

PS: hoffe das du meine Unit nicht in deine Sourcecode Formatierung (wenn man es so bezeichnen möchte) umbaust
Angehängte Dateien
Dateityp: pas typinfoex_796.pas (15,8 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#13

Re: InterfaceTable eines Interfaces?

  Alt 13. Mär 2007, 22:08
Nochwas ist mir aufgefallen

Delphi-Quellcode:
  Function ITGetItem( Index: Integer ): TGUID; StdCall;
    Function ITGetRefItem( Index: Integer ): TGUID; StdCall;
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

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: InterfaceTable eines Interfaces?

  Alt 14. Mär 2007, 09:35
Erstmal danke für deine ausführlichen Antworten! Muss erstmal alles überblicken...

Zitat von negaH:
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.
Nunja da ich hier in meinem aktuellen Projekt eigendlich nur mit den Interfaces arbeite, bzw. es versuche diese konsequent zu benutzen sind Property deklerationen in Interfaces eine schöne Möglichkeit ein Interface schön kompakt und übersichtlich zu benutzen.

Zitat von negaH:
du gibts in diesen Methoden einen "komplexen" Datentyp zurück. Das ist bei Interfaces eher unerwünscht.
Nungut, mit den komplexen Datentypen hast du schon irgendwie recht, sofern das noch wer anders nutzen will/muss/soll... Nunja ich fand es an der Stelle für mich persönlich so praktischer (schon wegen den Propertys )...

Zitat von negaH:
Sorry, aber aus meiner Sicht sieht dein Source "schei.." formatiert aus
Nun ok, meine Codeformatierung steht nicht jedem zu, aber so schreklich ist sie ja nun nicht oder? Ich finde sie zumindest absolut übersichtlich... (da gibt es wahrlich schlimmeres...)


Zitat von negaH:
Was hast du denn gegen meinen Vorschlag einzuwenden ? Ich meine das er sauberer, kompakter und im Grunde mit wenig Funktionalität exakt ds macht was du brachst.
Schlussendlich hab ich mir deinen Code für mich passend gemacht, um ihn so zu verwenden wie ich ihn benötige...
Und bis auf die 2 Wortdreher im Code ist er auch absolut genau der Lösungsansatz den ich gesucht hatte, von daher nochmal danke

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
Christian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:26 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