Hallo,
ich glaub, ich hab das Problem gelöst
Ausgehend von folgendem Code
Delphi-Quellcode:
const
HI = 1234567;
LO = -1234567;
var
tmp: Double;
res: Integer;
begin
tmp := AlterWert / Skalierung;
if tmp < LO then
res := LO
else
if tmp > HI then
res := HI
else
res := Round(tmp);
end;
habe ich durch try-and-error für den Konstantenwert "Lo" rausgefunden, dass genau vom Wechsel zw.
268435228 ($FFFFF1C) zu 268435229 ($FFFFF1D) der voher beschriebene Bluescreen auftritt!!!
Für HI ist der Wert High(Integer) möglich, allerdings werden dann beim zeichnen der Funktion für große x z.T. senkrechte Streifen gezeichnet (Die Streifen verschwinden erst für einen Wert der etwa |Lo| beträgt).
Daraus folgere ich, dass Windows intern eine Grenze von $7FFFFFF, bzw. - $FFFFF1D festgelegt hat!!!
Mein Code war also im Grunde genommen völlig korrekt, außer dass ich die falsche Negativ-Grenze verwendet habe
Naja, wieder mal was gelernt
Ich kann mir diesen krummen Wert zwar nicht erklären, aber was solls,
bis denne,
heiopei
PS:
Zitat:
Afair nutzt Polyline in Delphi doch TPoint und die wiederrum ShortInts und somit max. 16384 als Koordinatenwert.
In der
OH steht, dass TPoint aus zwei Longint-Variablen besteht, also im endeffekt aus zwei Integer-Variablen -> -2^31 bis 2^31-1