Einzelnen Beitrag anzeigen

heiopei
(Gast)

n/a Beiträge
 
#1

Probleme mit Bereichsüberprüfung

  Alt 14. Okt 2007, 10:08
Hallo,
ich bin gerade dabei, einen funktionenplotter für meine facharbeit zu entwickeln (Die Ausgabe ist bereits komplett fertig). Dabei ist die Anzeige frei skalierbar, d.h. jeder Funktionswert wird durch eine Skalierungskonstante dividiert, wenn die Funktion angezeigt werden soll.
(Bsp. Skalierungskonstante = 0,01 -> Ein Pixel = 0,01 ; Wert vorher: 10,12 => Wert nachher: 1012 => dem Wert wird der Integerwert 1012 zugewiesen)

So, jetzt hab ich aber das Problem, dass ich dauernd mit Double-Werten rechne und sie erst am ende der Werte-Transformation in Integer-Werte umrechne, um sie dann als Pixelwerte behandeln zu können. Allerdings bekomme ich z.b. für die funktion f(x)=x² irgendwann so große werte, dass ich bei der Zuweisung NeuerWert = Round(AlterWerte / Skalierung) einen overflow erhalte - klar. Jetzt wollte ich diesen Overflow abfangen:

NeuerWert := Round(EnsureRange(AlterWert / Skalierung, Low(Integer), High(Integer));

(EnsureRange ist eine Funktion aus der Unit Math, siehe OH)

Allerdings erhalte ich ab einem bestimmten Punkt einen Bluescreen mit der Meldung, dass ein Fehler in der win32.dll (oder exe, bin mir grad nicht sicher) aufgetreten ist.

Wie kann ich diesen Fehler umgehen?

mfg,
heiopei

Edit:
hHab jetzt nochmal die etwas genauere Beschreibung des Bluescreens
PAGE_FAULT_IN_NONPAGED_AREA

win32k.sys - Address BF87920A base at BF800000, DateStamp 41107f7a

tech. Info: STOP: 0x00000050 (0xEE3F2060, 0x00000001, 0xBF87920A, 0x000000000)
  Mit Zitat antworten Zitat