Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

Re: Anzahl der Elemente eines Aufzählungstyps ermitteln

  Alt 9. Dez 2007, 15:10
@Ares wie kommst du jetzt auf eine Klasse (TClass)?

i muß den selben Typ wie der Enumerator haben, also TMyEnum (oder wie er bei dir heißt.)

Try-Except ist hierbei unnötig, wo sollte auch eine Exception auftreten?

und jetzt rate mal wie oft die For-Schleife durchlaufen wird ... genau "High-Low+1"-mal ... und da nur ein Inc drinsteht, wleches die Durchläufe zählt, kann man sich die Durchläufe doch auch gleich ausrechen



Delphi-Quellcode:
type
  TMyEnum = (meEins, meZwei, meDrei);
  TMyEnumEx = (mxEins=1, mxZwei=2, mxSechs=6);

const
  MyEnumEx: Set of TMyEnumEx = [mxEins, mxZwei, mxSechs];

procedure TForm1.Button1Click(Sender: TObject);
var
  i: TMyEnum;
  i2: TMyEnumEx;
  Zaehler1, Zaehler2, Zaehler3, Zaehler4, Zaehler5: Integer;
  S: String;
begin
  Zaehler1 := 0;
  for i := Low(TMyEnum) to High(TMyEnum) do
    Inc(Zaehler1);

  Zaehler2 := Ord(High(TMyEnum)) - Ord(Low(TMyEnum)) + 1;

  Zaehler3 := 0;
  for i2 := Low(TMyEnumEx) to High(TMyEnumEx) do
    Inc(Zaehler3);

  Zaehler4 := Ord(High(TMyEnumEx)) - Ord(Low(TMyEnumEx)) + 1;

  Zaehler5 := 0;
  for i2 := Low(TMyEnumEx) to High(TMyEnumEx) do
    if i2 in MyEnumEx then
      Inc(Zaehler5);

  S := Format('TMyEnum - For: %d'#13#10
    + 'TMyEnum - Math: %d'#13#10
    + 'TMyEnumEx - For: %d'#13#10
    + 'TMyEnumEx - Math: %d'#13#10
    + 'TMyEnumEx - Const: %d',
    [Zaehler1, Zaehler2, Zaehler3, Zaehler4, Zaehler5]);
  Application.MessageBox(PChar(S), '');
end;
$2B or not $2B
  Mit Zitat antworten Zitat