Einzelnen Beitrag anzeigen

heiopei
(Gast)

n/a Beiträge
 
#9

Re: Probleme mit Bereichsüberprüfung

  Alt 19. Okt 2007, 14:10
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
  Mit Zitat antworten Zitat