AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Generics und Enums

Ein Thema von bernau · begonnen am 9. Sep 2015 · letzter Beitrag vom 14. Sep 2015
 
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.303 Beiträge
 
Delphi 12 Athens
 
#1

Generics und Enums

  Alt 9. Sep 2015, 03:49
Delphi-Version: XE8
Ich versuche mich grade an Generics. Da ich viel mit Enums arbeite, habe ich versucht diese beiden Dinge zu kombinieren. Als TypeParameter möchte ich also ein Enum angeben. Das kann ich hervorragend definieren, aber ich kann in einer Funktion diese Parameter nicht auswerten.

Hier mal ein Beispielcode:

Delphi-Quellcode:
unit genericstest;

interface

type
  TblubItems1 = (ti1a, ti1b, ti1c, ti1d, ti1f);
  TblubItems2 = (ti2a, ti2b, ti2c, ti2d, ti2f, ti2g);

type
  TGenericstest<TBlubItems> = class(TObject)
  public
    function count:integer;
    function IndexFromItem(aItem:TBlubItems):integer;
  end;

  TGenericstestBlub1 = class(TGenericstest<TblubItems1>);
  TGenericstestBlub2 = class(TGenericstest<TblubItems2>);

implementation

{ TGenericstest<TBlubItems> }

function TGenericstest<TBlubItems>.count: integer;
begin
  // Was hier rein setzen, um die Anzahl der Items im Aufzählungstyp zu ermitteln
  // Bei TblubItems1 muss das Ergebnis 5 sein.
  // Bei TblubItems2 muss das Ergebnis 6 sein.
end;

function TGenericstest<TBlubItems>.IndexFromItem(aItem: TBlubItems): integer;
begin
  // Was hier rein setzen, um den Index eines Items im Aufzählungstyp zu ermitteln.
  // Bei aItem = ti1a muss das Ergebnis 0 sein.
  // Bei aItem = ti2c muss das Ergebnis 2 sein.
end;

end.
Ich kann diese Objekte Erzeugen und anwenden.

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  lGenericstestBlub1 : TGenericstestBlub1;
  lGenericstestBlub2 : TGenericstestBlub2;
begin
  lGenericstestBlub1 := TGenericstestBlub1.create;
  lGenericstestBlub2 := TGenericstestBlub2.create;

  ListBox1.items.add(inttostr(lGenericstestBlub1.IndexFromItem(ti1a)));
  ListBox1.items.add(inttostr(lGenericstestBlub2.IndexFromItem(ti2b)));

  lGenericstestBlub1.free;
  lGenericstestBlub2.Free;
end;
Aber was nützt mir das, wenn ich in der Funktion IndexFromItem oder Count den übergebenen Typen nicht auswerten kann.

Ich habe schon in einem anderen Beitrag gesehen, das Generics und Enums nicht wirklich zusammen passen sollen. Aber der Beitrag ist von 2010. Vieleicht hat sich ja im Sprachumfang noch etwas geändert.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz