![]() |
Class Procedures + Interface
n'abend ihr, :angel:
solange innerhalb dieser Function nicht auf Self (also die Klasse) zugegriffen wird, geht ja sowas, aber gäbe es Probleme, wenn ich dieses auch noch über ein Interface zugänglich mach?
Delphi-Quellcode:
TMyClass = Class(TObject, IMyInterface)
Class Function CheckString(Const Value: AnsiString): Boolean; Virtual; End; Var MyClass: TMyClass; If TMyClass.CheckString('123') Then Beep; If MyClass.CheckString('123') Then Beep; Eigentlich wollte ich nur die selbe Function über die Klasse und die Objectreferenz zugänglich machen, nur leider geht sowas nicht zu überladen (wenn Name und Parameter gleich bleiben ... selbst nicht, wenn es einmal Class Procedure ist und das andere nur Procedure) im Grunde wäre es ja besser, wenn ich die Funktionsnamen änder, aber ich wollt liebendgern die selbe Funktion in allen fällen nutzen können :? es ist nur für eine Testfunktion, mit welcher getestet wird, ob das Object/die Klasse dafür genutzt werden kann. |
Re: Class Procedures + Interface
so könnte es funktionieren:
Delphi-Quellcode:
mr2
IMyInterface = interface(IInterface)
['{82DD5CD1-3A07-4810-9E3F-68B28D59E528}'] function CheckString(const Value: AnsiString): Boolean; end; TMyClass = class(TInterfacedObject, IMyInterface) function MyCheckString(const Value: AnsiString): Boolean; class function CheckString(const Value: AnsiString): Boolean; virtual; function IMyInterface.CheckString = MyCheckString; end; |
Re: Class Procedures + Interface
:shock: also vom Code her sieht's schonmal cool aus
und auch der Compiler läuft anstandslos an diesen Zeilen vorbei muß jetzt erstmal noch einiges fertig umbauen und werd's dann im laufenden Programm testen das ich MyCheckString nach nach PRIVATE verschoben hab, dürfte nicht stören. muß auch noch testen ob das zugehörige IOperatorInterface.CheckBinary bzw MyCheckString in der Codevervollständigung auftaucht ... einmal Checkstring darin würde schließlich ausreichen. gibt es solche umgeleiteten Definitionen eigentlich auch noch an anderer Stelle? und vielleicht auch noch Objectübergreifend? [add2]
Delphi-Quellcode:
geht leider nicht schade, hätt ich gebrauchen können :cry:
TMyClass = class
function MyCheckString(const Value: AnsiString): Boolean; function TestCheckString = MyCheckString; end; [/add2] wollt grad fragen ab wann (Delphiversion) dieses überhaupt funktioniert, aber da die knuffigen Record-Operatoren eh nicht überall laufen, ist das für mich dann erstmal egal :stupid: [add]grad mal erfolgreich in D7 getestet ... es weiß nicht zufällg wer unter welchem Namen dieses z.B. in der OH zu finden ist :?: [/add] ja und vielen Dank erstmal :kiss: |
Re: Class Procedures + Interface
Hallo himitsu,
in der Hilfe von Delphi 6 ist das im Index unter "Methodenzuordnung" zu finden. Bei Delphi 2006 gehst du am besten über die Suchfunktion mit dem Suchbegriff "Methodenzuordnungsklausel". Der Direktlink ist "ms-help://borland.bds4/bds4ref/html/ImplementingInterfaces.htm#MethodResolutionClause" . Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 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