Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

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

  Alt 8. Jul 2014, 18:37
Grade nochmal in XE5 und XE6 getestet:

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.

Hier nochmal ein kurzes Beispiel:
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses System.Classes;

type

   TMyThread = class(TThread)
      protected procedure Execute(); override;
   end;

   TThreadHelper = class helper for TThread
      public procedure helperStuff();
   end;

procedure TThreadHelper.helperStuff();
begin
   //
end;

procedure TMyThread.Execute();
begin
   while not Terminated do helperStuff();
   // Würde angezeigt:
   // (self as TThread).helperStuff();
end;

begin
   //
end.
Ist das so gewollt? Wenn ja, warum?


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.

Geändert von Der schöne Günther ( 8. Jul 2014 um 18:43 Uhr)
  Mit Zitat antworten Zitat