Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Code Completion listet keinen Helferkram für Oberklassen, aber kompiliert wird es

  Alt 9. Jul 2014, 06:32
Wenn man eine Helferklasse für bsp. TThread bastelt und sich einen eigenen Thread TMyThread = class(TThread) definiert lassen sich die Hilfsmethoden in jeder TThread -Unterklasse verwenden. Von der Code Completion werden diese Methoden aber nur angezeigt wenn man eine TThread -Referenz verwendet.
Wahrscheinlich haben da diejenigen, welche die Helper implementiert haben, nicht gut genug mit denjenigen kommuniziert, welche die Code Completion implementiert haben. Das funktioniert so bereits seit Delphi 2006 und FPC implementiert das ebenso

Zitat:
PS: Helferklassen können ja sogar voneinander erben. Ich kann nun einen TMyThreadHelper bauen der von TThreadHelper erbt und weitere Dinge einführt. Aber die Code Completion schlägt immer noch nichts vor.
Aber in Delphi nur Helper für Klassen. Bei Helpern für Records oder primitive Typen geht das nicht. (In FPC habe ich diese Einschränkung für alle anderen Modi außer Delphi auch aufgehoben )

Wenn du mit Vererbung und Helpern spielst solltest du übrigens die folgenden beiden Punkte beachten:
  • außerhalb eines Helpers wird zuerst nach einem Helper für die konkrete Klasse gesucht, danach in der Klasse selbst und als drittes wird dieses Spiel mit jeder Elternklasse fortgesetzt; das heißt. dass du in deinem TMyThread Methoden haben kannst, die auch der TThreadHelper hat, welche dann von letzterem nicht verborgen werden
  • innerhalb eines Helpers ist die Suchlogik etwas obskur: zuerst wird im konkreten Helper gesucht (hier zum Beispiel TMyThreadHelper ), dann in der erweiterten Klasse. Als nächstes in den vererbten Helpertypen (ohne deren erweiterten Typ zu betrachten) und dann in den Elternklassen der erweiterten Klasse

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat