Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Mehrere Class helper für eine Basisklasse (https://www.delphipraxis.net/191541-mehrere-class-helper-fuer-eine-basisklasse.html)

Rollo62 26. Jan 2017 08:16

Mehrere Class helper für eine Basisklasse
 
Hallo zusammen,

ich frage mich wie man mehrere class helper verwalten könnte.

Als Beispiel:

in UnitAbc.pas:

Delphi-Quellcode:
type
  TBaseClassAbc_Helper = class helper for TBaseClass // Edit: class helper
    Procedure DoAbc;
  end;
in UnitXyz.pas:

Delphi-Quellcode:
type
  TBaseClassXyz_Helper = class helper for TBaseClass    // Edit: class helper
    Procedure DoXyz;
  end;

und in der Anwendung;

Delphi-Quellcode:
uses
    UnitBaseClass, UnitAbc, UnitXyz;


procedure Use;
var
  LBase : TBaseClass;
begin
   
   LBase.DoAbc; // Das geht so wohl nicht, weil nur ein class helper aktiv ist
   LBase.DoXyz;

   TBaseClassAbc_Helper(LBase).DoAbc; // Oder könnte man das mit Namespaces iregendwie casten ?
   TBaseClassXyz_Helper(LBase).DoXyz;

end;
Gäbe es irgendeine "offizielle" Methode dafür, oder geht soetwas gar nicht ?

Rollo

Der schöne Günther 26. Jan 2017 08:22

AW: Mehrere Class helper für eine Basisklasse
 
Das geht in Delphi leider nicht.

Ein
Delphi-Quellcode:
class helper for ...
kann immerhin von einem anderen erben und seine Methoden übernehmen. Komischerweise kann ein
Delphi-Quellcode:
record helper for ...
aber nicht von einem Record-Helper erben.

Rollo62 26. Jan 2017 08:37

AW: Mehrere Class helper für eine Basisklasse
 
Hallo Günther,

dankesehr für den Tipp, das ist ja immerhin etwas.

Also in der Art:
Delphi-Quellcode:
type
  TBaseClassXyz_Helper = class helper for TBaseClassAbc_Helper
    Procedure DoXyz;
  end;
So sollte das also funktionieren, muss ich mal checken.


Rollo

Uwe Raabe 26. Jan 2017 08:44

AW: Mehrere Class helper für eine Basisklasse
 
Zitat:

Zitat von Rollo62 (Beitrag 1360000)

Also in der Art:
Delphi-Quellcode:
type
  TBaseClassXyz_Helper = class helper for TBaseClassAbc_Helper
    Procedure DoXyz;
  end;

Nein, so nicht! Aber so (wenn TBaseClass wirklich eine class ist):

Delphi-Quellcode:
type
  TBaseClass = class
    ABC: Integer;
    XYZ: Integer;
  end;

  TBaseClassAbc_Helper = class helper for TBaseClass
    Procedure DoAbc;
  end;

  TBaseClassXyz_Helper = class helper(TBaseClassAbc_Helper) for TBaseClass
    Procedure DoXyz;
  end;

Rollo62 26. Jan 2017 08:52

AW: Mehrere Class helper für eine Basisklasse
 
Hallo Uwe,

vielen Dank, sieht komisch aus, ist aber so :stupid:

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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