首页 头条 财经 产业 跨境 时尚 物流 直播 零售 WAP端
首页 / 电商潮牌 / 正文

invalid floating point operation—非法浮点指针错误

来源:
编辑:电经淘讯
时间:2023-09-01

    

Invalid floating point operation:非法的浮点指针操作有代码错误。delphi“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。

头条聚焦更多
经济视界更多

估值下跌百亿美元,突然不香了?小红书

去年,互联网大厂主打“降本增效”,醒目地缺席央视春晚,让位于...[详细]

特步陷入北京半马“假赛”争议

    北京时间2024年4月14日,2024年北京半程...[详细]

热点财经更多
  • CopyRight @ 2005-2023 Reserved 中国电商经济网版权所有所涉内容免责声明查阅