![]() |
Klassentyp auf Interface-Implementierung prüfen
Hallo,
mal ne Frage: Es gibt ja
Delphi-Quellcode:
, das unterstützt aber nur Instanzen. Ich suche jetzt schon ne weile eine Funktion, die das selbe auch für Klassentypen anbietet.
Supports()
Irgendwer eine Idee? |
AW: Klassentyp auf Interface-Implementierung prüfen
![]()
Delphi-Quellcode:
function Supports(const Instance: IInterface; const IID: TGUID; out Intf): Boolean;
function Supports(const Instance: TObject; const IID: TGUID; out Intf): Boolean; function Supports(const Instance: IInterface; const IID: TGUID): Boolean; function Supports(const Instance: TObject; const IID: TGUID): Boolean; function Supports(const AClass: TClass; const IID: TGUID): Boolean; |
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
|
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
|
AW: Klassentyp auf Interface-Implementierung prüfen
Weiß ich gerade nicht mehr. Jo, leider zeigt er nicht direkt alle Überladungen an, eine Sache, die mich an Delphi schon wirklich abnervt.
|
AW: Klassentyp auf Interface-Implementierung prüfen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 50413 |
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
Konkretes Beispiel: Bei der Verwendung von CodeSite öffnet die Programmierhilfe bei der Eingabe von
Delphi-Quellcode:
in einem scrollbaren Popup eine Auto-COmplete-Liste von 47 Methoden, die alle mit Send beginnen. Gibt man nun hinter dem Send eine öffnende Klammer bietet die aktive Code-Parameter Option (Das ist eine andere Funktion als die oben genannte Programmierhilfe) ein Hint-Fenster mit 48 Overloads der Send-Methode an. Würden die Overloads bereits in der Programmierhilfe angezeigt werden, müsste ich erst in 170 Einträgen den passenden Aussuchen, wobei ich die meiste Zeit wohl nie mehr als zwei verschiedene Methodennamen gleichzeitig sehen könnte.
CodeSite.Send
Wenn jemand kein CodeSite benutzt, mag er das obige Beispiel mal an
Delphi-Quellcode:
und Write/WriteData ausprobieren. Ist nicht ganz so krass, aber macht es ebenso deutlich.
TStream
Ich finde, das aktuelle Verhalten ist komfortabel und praxisorientiert. Es soll darum auch bitte so bleiben. |
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
|
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
Ich finde das an der Stelle nicht wichtig, fände einen dezenten Hinweis aber auch gut. Aber wie könnte der aussehen ohne dabei unnötig Platz zu benötigen? Und so, dass er trotzdem intuitiv verständlich ist. |
AW: Klassentyp auf Interface-Implementierung prüfen
"MyProcedure(...)"?
|
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
|
AW: Klassentyp auf Interface-Implementierung prüfen
Naja, so seh ich das auch. Muss nicht jede überladung angezeigt werden. Aber zu mindest ein hinweis, wie "overload" o.ä.
|
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
|
AW: Klassentyp auf Interface-Implementierung prüfen
Zitat:
Schick wäre vielleicht auch eine aufklappbare Unterliste mit den verschiedenen Overloads im Stile eine Popupmenüs. |
AW: Klassentyp auf Interface-Implementierung prüfen
Oder, was ich mir vorstellen könnte:
Angezeigt wird nur die erste überladung (so wie jetzt). Wenn man aber entweder mit dem Mauszeiger drüber fährt oder den Eintrag auswählt, kommt ja jetzt auch schon ein Tooltip. Dieser könnte dann die Überladungen schon mit anzeigen. Oder aber, man zeigt die Überladungen vernünftig direkt an, aber so, dass die Übersicht nicht flöten geht. Also inline meine ich:
Delphi-Quellcode:
würde zu:
procedure Poo; overload;
procedure Poo(A: Integer); overload;
Delphi-Quellcode:
procedure Poo([A: Integer]);
Delphi-Quellcode:
würde zu:
function Foo(A: Integer): String; overload;
function Foo(A: Double): AnsiString; overload;
Delphi-Quellcode:
(So wird es ja beispielsweise auch schon seit jeher mit den Makros, also den intrinsischen "Routinen" gelöst.
function Foo(A: <Integer or Double>): <String or AnsiString>;
|
AW: Klassentyp auf Interface-Implementierung prüfen
Das sind aber auch wieder nur recht einfache Beispiele. Bei den oben genannten Anwendungsfällen würde das jämmerlich versagen. So ist ja überhaupt nicht mehr zu erkennen, welche Parameter-Kombinationen möglich sind. Ich werfe mal einfach
Delphi-Quellcode:
mit seinen 18 Überladungen in den Raum (und da fehlen sogar noch ein paar bis zur Vollständigkeit).
string.Split
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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