我已经在 Delphi 6,7 和 XE2 中测试过,都显示这个错误。
我想直接比较线程中的两个浮点数,如下所示:

threadvar
  a,b : Double;

procedure test;
begin
  if a > b  then
    ;
end;

但是在编译的时候,DCC发生了一个内部错误。所以我把它改成了这样:
threadvar
  a,b : Double;

procedure test;
begin
  if a - b > 0  then
    ;
end;

错误消失了,为什么?

最佳答案

这显然是编译器中的一个错误。我已将该错误报告给质量中心 QC#101656 。该错误仅影响 32 位编译器,这对任何人来说都不是很大的安慰!

您可以通过将变量放在这样的记录中来解决它:

threadvar
  r: record
    a,b: Double;
  end;

procedure test;
begin
  if r.a > r.b then
    ;
end;

关于multithreading - 在Delphi中,为什么不能和threadvar类型的浮点直接比较?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8425728/

10-10 08:23