Moin...
Zitat:
Wie kann ich das Problem lösen?
...den Eingangswert x 100 vor dem case.
Das sehe ich auch als Lösung an, also konkreter mal so in der Art:
Delphi-Quellcode:
function TfrmEditor.GetZoomFactorAsPercent(
AZoomFactor: Single = 1): TibZoomFactorPercent;
begin
Result := TibZoomFactorPercent.Custom;
case Trunc(AZoomFactor * 100) of // Hier tritt der Fehler auf...
10: Result := TibZoomFactorPercent.Percent10;
25: Result := TibZoomFactorPercent.Percent25;
50: Result := TibZoomFactorPercent.Percent50;
75: Result := TibZoomFactorPercent.Percent75;
100: Result := TibZoomFactorPercent.Percent100;
125: Result := TibZoomFactorPercent.Percent125;
150: Result := TibZoomFactorPercent.Percent150;
175: Result := TibZoomFactorPercent.Percent175;
200: Result := TibZoomFactorPercent.Percent200;
250: Result := TibZoomFactorPercent.Percent250;
300: Result := TibZoomFactorPercent.Percent300;
400: Result := TibZoomFactorPercent.Percent400;
500: Result := TibZoomFactorPercent.Percent500;
end;
Alles mit "Wert = 0.10" KANN nicht funktionieren, also genausowenig mit case,
weil man float Werte nicht einfach vergleichen kann.
(Siehe unten die Vorschläge mit SameValue)
Deshalb wird es ein case mit float nicht geben können.