Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Enumeration als Parameter übergeben (https://www.delphipraxis.net/160747-enumeration-als-parameter-uebergeben.html)

Marco Fischer 29. Mai 2011 19:33

Delphi-Version: XE

Enumeration als Parameter übergeben
 
Hallo,

ich möchte gerne folgendes realisieren:

In einer projektübergreifenden Unit soll eine Klasse für den Registry-Zugriff implementiert werden, mit den entsprechenden Getter/Setter-Funktionen für den Registry-Zugriff (Lesen/Schreiben), basierend auf Indexbezeichner.
Im Projekt soll eine davon abgeleitete Klasse definiert werden, in welcher dann die projektspezifischen Properties mittels Indexbezeichner definiert werden. Als Indexbezeichner soll dabei eine Enumeration zum Einsatz kommen.
In der Basis-Klasse soll aus der Enumeration mittels GetEnumName der entsprechende Bezeichner ermittelt und als Name für den Registry-Eintrag verwendet werden.
Wie kann ich jetzt die pro Projekt verschiedenen Enumerations z.B. im Konstruktor an die Basis-Klasse übergeben?

Vielen Dank für jeden Hinweis.

Mit freundlichen Grüßen

Marco

jaenicke 29. Mai 2011 19:45

AW: Enumeration als Parameter übergeben
 
Wie wäre es mit Generics?
Delphi-Quellcode:
type
  TBaseClass<T> = class
  public
    constructor Create(MyParam: T);
  end;

  // andere Unit:
  TTestClass1 = class(TBaseClass<TMyEnum1>)
  end;
Und so weiter. So kannst du in der Basisklasse den Typ offen lassen und erst bei der konkreten Klasse von der entsprechend typisierten Klasse ableiten.

Marco Fischer 29. Mai 2011 20:48

AW: Enumeration als Parameter übergeben
 
Hallo,

als D5 Umsteiger waren mir die Generics noch nicht geläufig.
Hat jetzt problemlos damit funktioniert.

Vielen Dank für die schnelle und konstruktive Hilfe.

Mit freundlichen Grüßen

Marco

himitsu 30. Mai 2011 07:53

AW: Enumeration als Parameter übergeben
 
Ansonsten hätte man noch untypisierte Parameter nehmen können (also ohne Verfügbakeit der Generics.

Delphi-Quellcode:
type
  TTestClass1 = class
  public
    constructor Create(const MyParam);
  end;

  // andere Unit:
  TTestClass1 = class(TBaseClass)
  end;
Wenn man jetzt davon ausgeht, daß die Enumeratoren immer maximal 256 Werte besitzen, dann könnte man dieses intern in ein Byte casten.


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