Hallo,
ich habe gerade ein simples Case-Statement mit Single-Werten geschrieben. Leider kann ich es nicht kompilieren. Die Meldung lautet:
Zitat:
E2001 Ordinaltyp erforderlich
Mir ist klar das ein Single kein Ordinal-Typ ist. Aber es kann doch nicht sein das man kein Case auf Float anwenden kann? Wie kann ich das Problem lösen? Gibt es irgendeine Funktion dafür (wie z.B. CharInSet, etc.), muss das über
RTTI gemacht werden oder komme ich um einfache If-Abfragen nicht vorbei?
So habe ich es versucht:
Delphi-Quellcode:
TibZoomFactorPercent = (
Custom,
Percent10,
Percent25,
Percent50,
Percent75,
Percent100,
Percent125,
Percent150,
Percent175,
Percent200,
Percent250,
Percent300,
Percent400,
Percent500
);
function TfrmEditor.GetZoomFactorAsPercent(
AZoomFactor: Single = 1): TibZoomFactorPercent;
begin
Result := TibZoomFactorPercent.Custom;
case AZoomFactor of // Hier tritt der Fehler auf...
0.10: Result := TibZoomFactorPercent.Percent10;
0.25: Result := TibZoomFactorPercent.Percent25;
0.50: Result := TibZoomFactorPercent.Percent50;
0.75: Result := TibZoomFactorPercent.Percent75;
1: Result := TibZoomFactorPercent.Percent100;
1.25: Result := TibZoomFactorPercent.Percent125;
1.50: Result := TibZoomFactorPercent.Percent150;
1.75: Result := TibZoomFactorPercent.Percent175;
2: Result := TibZoomFactorPercent.Percent200;
2.50: Result := TibZoomFactorPercent.Percent250;
3: Result := TibZoomFactorPercent.Percent300;
4: Result := TibZoomFactorPercent.Percent400;
5: Result := TibZoomFactorPercent.Percent500;
end;
end;