AGB  ·  Datenschutz  ·  Impressum  







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

Class Procedures + Interface

Ein Thema von himitsu · begonnen am 26. Jan 2009 · letzter Beitrag vom 26. Jan 2009
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

Class Procedures + Interface

  Alt 26. Jan 2009, 21:28
n'abend ihr,

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.
$2B or not $2B
  Mit Zitat antworten Zitat
mr2

Registriert seit: 3. Mai 2003
140 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Class Procedures + Interface

  Alt 26. Jan 2009, 21:51
so könnte es funktionieren:

Delphi-Quellcode:
  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;
mr2
"... we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we don't know. But there are also unknown unknowns - the ones we don't know we don't know."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Class Procedures + Interface

  Alt 26. Jan 2009, 22:11
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:
TMyClass = class
  function MyCheckString(const Value: AnsiString): Boolean;
  function TestCheckString = MyCheckString;
end;
geht leider nicht schade, hätt ich gebrauchen können
[/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
[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
$2B or not $2B
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Class Procedures + Interface

  Alt 26. Jan 2009, 23:16
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:44 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