我已经在 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/