在Delphi中,为什么不能直接比较threadvar类型的浮点?

时间:2011-12-08 03:21:11

标签: multithreading delphi floating-point double

我在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;

错误消失了,为什么?

1 个答案:

答案 0 :(得分:3)

这显然是编译器中的一个错误。我已向Quality Central报告了该错误,QC#101656。该错误只影响32位编译器,而不是对任何人都有很多安慰!

您可以通过将变量放在如下记录中来解决此问题:

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

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