最近用EmbeddedWB控件做瀏覽器相關(guān)應(yīng)用的時(shí)候,發(fā)現(xiàn)有些網(wǎng)頁(yè)只要一打開(kāi)就一定會(huì)蹦出一個(gè)“Invalid floating point operation”異常(關(guān)掉異常對(duì)話框以后,瀏覽器無(wú)響應(yīng)),而程序僅僅是一句
WebBrowser1.Navigate(Edit1.Text);
貌似很多含有Silverlight元素的網(wǎng)頁(yè)打開(kāi)時(shí)都會(huì)帶出這個(gè)bug。而且關(guān)鍵是,錯(cuò)誤提示完全讓人摸不著頭腦有木有?。。。?!
百思不得其解,遂Google之,得結(jié)論如下:
1、很多網(wǎng)友都遇見(jiàn)過(guò)同樣的問(wèn)題
2、Borland官方解釋請(qǐng)點(diǎn)這里(我這打不開(kāi))
3、大概的情況是,在使用一些浮點(diǎn)操作時(shí),微軟默認(rèn)設(shè)計(jì)會(huì)拋出一系列的異常。這些異常按理說(shuō)不應(yīng)該阻止程序運(yùn)行。但不知道為什么,Delphi默認(rèn)是截獲后又把異常拋了出來(lái),被系統(tǒng)截獲就會(huì)影響程序運(yùn)行了。Borland給的解決方法是,加一句
Set8087CW(Longword($133f));
來(lái)關(guān)閉這個(gè)機(jī)制. 你可以加在form的OnCreate事件里。
雖然問(wèn)題解決了,不過(guò)不明白為什么,求高人指點(diǎn)。
參考:
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/System_Set8087CW.html
聯(lián)系客服