NaN根据Python启动提供错误?

Muh*_*uri 4 python delphi embedding

我正在使用Python4Delphi将Python嵌入到Delphi程序中.版本:Python 2.6.4,Delphi 2009,Windows XP.

导入时Delphi程序与EInvalidOp崩溃json.我跟踪了它

NaN, PosInf, NegInf = float('nan'), float('inf'), float('-inf')
Run Code Online (Sandbox Code Playgroud)

json.decoder.

果然,该命令float('nan')引发了EInvalidOp在Delphi程序中嵌入的Python内部运行.在命令行Python(相同安装)中执行时,它只返回nan.

知道Python标准启动和嵌入式启动之间有什么区别可能导致这样的错误?

Jer*_*ers 5

这很可能是Python使用与Delphi 不同的8087控制字(CW)设置.

试试这种代码:

var
  OldControlWord: Word;
begin
  OldControlWord := Get8087CW();
  Set8087CW($133F);
  try
    // perform your Python code here
  finally
    Set8087CW(OldControlWord);      
  end;
end;
Run Code Online (Sandbox Code Playgroud)

有关$ 133F价值的更详细说明,请参阅我在Delphi中的8087 CW上的博客文章.
它需要的JCLT8087Precision类型(这是在Jcl8087单位).

--jeroen