Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Der Code steckt im Helper, so wie jetzt auch, bei all den anderen Helpern.
Das Objekt/Interface muß und soll garnichts davon wissen, genauso wie der Vorfahr von einer Vererbung auch nichts wissen soll.
Der Compiler leitet den Aufuf auf die Helper-Methode um, wenn er sie findet und geht nicht direkt auf das Objekt/Interface los.
Das ist es, was Delphi bei den Class-Helpern macht ... so im...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Siehe Stevies Antwort, kurz vor dir.
Auch Interfaces kann man vererben, aber dann muß ich die Methoden nicht nur ins Interface einbauen, sondern auch in das dahinterliegende Objekt und genau das kann/will ich nicht, vorallem nicht, wenn man das Dahinter garnicht kennt und keinen Zugriff darauf hat.
Mir würde es auch reichen, wenn man statische Methoden direkt im Interface deklarieren...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Bei der Vererbung müssen sich aber die Helper kennen, bzw. es sind dann "immer" beide Helper eingebunden, wenn man den Nachfahren haben will.
Man kann aber nicht mehrere Helper unabhängig "parallel" deklarieren.
z.B. der Helper vom Delphi, dann Meiner (OK, da könnte man vererben), aber jetzt kommen noch die Helper von sh17 und Anderen dazu, die ich mir über Fremdkomponenten reinhole.
...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Delphi ist ja bald richtig erwachsen ... mit 35 sind dann wohl auch die letzten Jugendsünden behoben. :angel:
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Die Funktion ist eben nicht im Interface, genauso wenig, wie bei den anderen Record/Class-Helpern oder so wie eine class procedure nicht im Objekt steckt, zu Welchem sie deklariert wurde.
Helper sollen nicht das Objekt/Interface selbst verändern, sondern nur darauf aufbauend eine Funktionen hinzufügen. (drum darf/kann man dort auch keine Felder deklarieren oder dynamic/virtual/abstract...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Einen Implicit-Cast mit einem Record hatte ich zwar schon überlegt, aber die Lösung fand ich nicht gut, denn erstmal ist das für statische Methoden, auf den Interface-Typ nicht möglich
und dann kann man die Codevervollständigung auch gleich komplett vergessen.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
17. Feb 2015
Wenn man es so nimmt, dann wollte ich diesesmal genau das.
Im Grunde geht es genau um das, wozu diese Helper erfunden wurden. Das "erweitern" der Funktionen, von irgedwas (Klasse/Record/Typ), ohne diesen Typen direkt zu verändern.
Bei Klassen kann man einfach vererben, aber bei Interfaces geht das nicht, denn dort muß man das "Objekt" hinter dem Interface verändern/kapseln und...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
16. Feb 2015
Man kann doch Class/Record Helper nun an "alles" dran hängen?
Warum nicht auch an Interfaces?