Hallo,
ich habe ein ziemlich seltsames Problem mit der aktuellen Version von TDxDraw und der Function FloatToStr() von Delphi 2007. Sobald ein DxDraw auf der Form platziert ist, gibt FloatToStr() ziemlich wirre Werte von sich:
Delphi-Quellcode:
var
s: String;
r: Double;
begin
r := 5;
s := SysUtils.FloatToStr(r);
Showmessage(s);
Ohne DxDraw auf der Form:
Rückgabe: "5" (richtig)
MIT DxDraw auf der Form:
Rückgabe: "4,99999992153375" (irgendwie falsch)
Es scheint irgendwie ein Fehler mit der Genauigkeit zu geben; wenn ich die Function FloatToText() direkt aufrufe (was FloatToStr ja schließlich auch macht), tritt der Fehler solange auf, bis ich den Parameter "Precision" (standardmäßig auf 15) auf einen Wert unter 7 setze:
SetString(s, Buffer, FloatToText(Buffer, r, fvExtended, ffGeneral, 7, 0));
Wie gesagt tritt dieses Problem nur auf, wenn ein DxDraw auf der Form liegt; ob DxDraws in der uses-Klausel auftritt, ist egal.
Ich weiß, das DxDraw veraltet ist, daher bitte keine (berechtigten) Hinweise auf Alternativen
Hat jemand eine Idee, woran das liegen könnte?