Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)
这两天用webbrower写东西,有时候打开SSL加密网站时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上。
导致原因
在Delphi2011中需要通过浮点单位控制指令设置浮点运算单位。浮点单位控制指令控制着浮点运算的精度、四舍五入的方式以及特定的浮点运算是否触发异常。可以参阅Intel处理器的详细文档。
在Delphi2011中有函数可以直接访问处理器的控制指令。比如,可以使用Set8087CW函数改变8087CW控制指令的值,从而改变程序浮点计算的行为。编程人员需要自己负责在程序结束时重置这个指令。
解决办法,就是直接禁用浮点异常,方法如下:
在在Delphi2011中,当使用OpenGL进行3D渲染时,推荐使用Set8087CW函数禁用浮点异常。可以在调用OpenGL函数之前,比如在mainForm的OnCreate的过程中写入: Set8087CW(0x133f)
实例代码:
1.声明全局的变量保存原有的8087CW设置
var
Saved8087CW: Word;
2.在mainForm的OnCreate过程中改变8087CW的值,改变之前先保存默认值
Saved8087CW := Default8087CW;
Set8087CW($133f); { Disable all fpu exceptions }
3.在程序结束前,使用默认值重置8087CW指令值。在mainForm的OnClose过程中
Set8087CW(Saved8087CW);
4.还有一点需要注意,如果在程序中使用了SceneControl.LoadSxFile载入了3D文档,那么必须在程序退出时,在Set8087CW之前调用IScene的ClearLayers方法清除图层,否则程序在退出时会出现异常。
参考代码为:
SceneControl1.Scene.ClearLayers;
Set8087CW(Saved8087CW);
5.还有在程序退出之前需要调用如下语句
(CoAoInitialize.Create as IAoInitialize).Shutdown
http://blog.csdn.net/shuaihj/article/details/6406781
Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)的更多相关文章
- delphi “Invalid floating point operation.”错误的解决方法
这两天用webbrower写东西,有时候打开SSL加密站点时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上. 导致原因 在Delphi2 ...
- Delphi 多线程 “尚未调用CoInitialize错误”的解决方法
在Delphi 多线程中出现“尚未调用CoInitialize错误”的解决方法 解决方法如下: function TMyThread.ExecTimer: Boolean;begin Resul ...
- java.io.StreamCorruptedException: invalid type code: AC错误的解决方法
问题描述: 在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列化的对象,于是使用了FileOutputStream(文件名,true)间接的构建了ObjectOutputStream流 ...
- 关于delphi软件运行出现Invalid floating point operation的错误的解决办法
关于delphi软件运行出现Invalid floating point operation的错误的解决办法 关于delphi软件运行出现Invalid floating point operat ...
- Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决
Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi 最近用E ...
- 启动android程序和虚拟机时候出现如下错误的解决方法
启动android程序和虚拟机时候出现如下错误的解决方法. 错误重现: [2011-07-13 16:22:48 - Emulator] invalid command-line parameter: ...
- 微信jssdk常见错误及解决方法
调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息.以下为常见错误及解决方法: invalid url domain当前页面所在域名与使用 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...
随机推荐
- JVM调优总结(八)-典型配置举例2
常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为 ...
- httplib,urllib和urllib2
一.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib con ...
- 基于visual Studio2013解决算法导论之007优先队列(堆实现)
题目 优先队列 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...
- hibernate笔记(一)
一.主配置文件hibernate.cfg.xml 位置:放在src目录下. 主要包含信息: 一.数据库信息 数据库方言(类的全名) 及 数据库链接信息 1. 数据库方言 2. ...
- 公司需求知识学习-WCF
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- JS乘法口诀表(一行代码)
(function(c){for(i=1;i<=9;i++){var s='';for(j=1;j<=i;j++){s+=i+'X'+j+'='+i*j+'\t';}c.debug(s); ...
- tab group of firefox
https://addons.mozilla.org/en-US/firefox/addon/tabgroups-menu/? src=search#detail-relnotes https://g ...
- 【floyd】HDU 1874 畅通project续
之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放. 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种. 1.单源最短路 ...
- 基于visual Studio2013解决C语言竞赛题之1010计算
题目 解决代码及点评 /************************************************************************/ ...
- 免解压版的Mysql的启动脚本,并且执行导入(windows)
@echo off rem ################### set MYSQL_VERSION=mysql-5.5.32-win32 set LOCK=wot.lock rem ####### ...