Hallo!
Bei manchen neueren Mainboards mit AMD-Prozessor tritt unter Win98 folgendes Problem auf.
Ein try..except statement löst bei einer Division durch 0 keine Exception aus, sondern führt spätestens nach mehrmaligem Ausführen zum Bluescreen. Mit Intel-Rechnern trat das Problem bisher nicht auf. Zum testen habe ich einfach ein Formular mit einem Button erstellt und folgenden Code in den OnClick-Handler eingefügt. Das ganze funktioniert nur, wenn die Codeoptimierung in den Projektoptionen ausgeschaltet ist, sonst wird der (zugegebenermassen sinnlose Code :-) ) wegoptimiert.
procedure TForm1.Button1Click(Sender: TObject);
var x,y : real;
begin
x:=0;
try
y:=1000/x;
except
y:=1;
end;
end;
Bis zur Exception kommts eigentlich garnicht, weil ich einen netten Bluescreen erhalte vorher. Das ganze lässt sich umgehen, wenn ich in der Systemsteuerung den Numerischen Coprozessor abschalte. Dann läuft das Programm ordnungsgemäß. Zuerst wusste ich nicht, ob man überhaupt eine Division durch 0 mit einer Exeception abfangen sollte, aber als ich in der Delphi Hilfe genau so ein Beispiel zum try..except statement fand, hielt ich es für O.K.
Mittlerweile haben 6 verschiedene Kunden das Problem. Hat vielleicht jemand eine Ahnung was das sein könnte? Liegts am Delphi? Oder am Chipsatz? Ich habe grad einen Rechner hier mit Asus A7V266 mainboard und 1200er Athlon, da tritt das auf, aber auch andere Rechner mit anderen mainboards und 800er Amd haben das.
vielen Dank im Vorraus,
Carsten Hirschfeld
Bei manchen neueren Mainboards mit AMD-Prozessor tritt unter Win98 folgendes Problem auf.
Ein try..except statement löst bei einer Division durch 0 keine Exception aus, sondern führt spätestens nach mehrmaligem Ausführen zum Bluescreen. Mit Intel-Rechnern trat das Problem bisher nicht auf. Zum testen habe ich einfach ein Formular mit einem Button erstellt und folgenden Code in den OnClick-Handler eingefügt. Das ganze funktioniert nur, wenn die Codeoptimierung in den Projektoptionen ausgeschaltet ist, sonst wird der (zugegebenermassen sinnlose Code :-) ) wegoptimiert.
procedure TForm1.Button1Click(Sender: TObject);
var x,y : real;
begin
x:=0;
try
y:=1000/x;
except
y:=1;
end;
end;
Bis zur Exception kommts eigentlich garnicht, weil ich einen netten Bluescreen erhalte vorher. Das ganze lässt sich umgehen, wenn ich in der Systemsteuerung den Numerischen Coprozessor abschalte. Dann läuft das Programm ordnungsgemäß. Zuerst wusste ich nicht, ob man überhaupt eine Division durch 0 mit einer Exeception abfangen sollte, aber als ich in der Delphi Hilfe genau so ein Beispiel zum try..except statement fand, hielt ich es für O.K.
Mittlerweile haben 6 verschiedene Kunden das Problem. Hat vielleicht jemand eine Ahnung was das sein könnte? Liegts am Delphi? Oder am Chipsatz? Ich habe grad einen Rechner hier mit Asus A7V266 mainboard und 1200er Athlon, da tritt das auf, aber auch andere Rechner mit anderen mainboards und 800er Amd haben das.
vielen Dank im Vorraus,
Carsten Hirschfeld
Comment