Ok das Problem ist relativ simpel, hat aber definitiv was mit dem neuesten Windows Update ( scheinbar für alle Windows Versionen ) zu tun.
Und zwar ist nach einem .navigate auf der TWebBrowser danach das
Exception Handling im Eimer.
Das passiert sogar mit alten Windows/IE Versionen, wenn auf der Seite ein Fehler auftritt. 403, Script Error usw.
Aber mit den neuen gepatchten Windows Versionen reicht ein about
:blank
Code:
procedure TForm1.Button1Click(Sender: TObject);
var a,b: real;
begin
webbrowser.Navigate('about
:blank');
// webbrowser.Navigate('http://www.google.de');
try
a:= 100;
b:= 100;
a:= a / (100 - b);
showmessage(format('<%.2f> <%.2f>',[a,b]));
except
// a := 0;
// on e:EZeroDivide do showmessage('EZeroDevide');
on E :
Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end;
Resultat ist keine
Exception und in A steht INF.
In ein paar anderen Konstellationen kann auch NAN drin stehen.
Edit : System.Set8087CW(Default8087CW); nach .navigate aktiviert das Handling wieder.
Edit2 : 100% kann man sich auf das Set doch nicht verlassen und letztendlich ist das Problem auch das sich einige bei uns das Leben einfach gemacht haben und mit try/except eine Div durch 0 abzufangen
Die sauberste Variante ist natürlich das abfangen ob durch 0 dividiert wird.