【发布时间】:2012-05-11 23:42:53
【问题描述】:
我在 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;
错误消失了,为什么?
【问题讨论】:
-
Delphi 编译器中的“内部错误”通常不应该发生。换句话说,这很可能是 Embarcadero 的某个人需要解决的错误,而不是 StackOverflow 上的某个人可以“回答”的编程问题。
-
所以如果我直接复制您的第一个代码块并将其按原样放入一个单元中,我会收到内部错误吗?可能是因为在
procedure test中使用 a 或 b 之前您没有初始化它们吗? -
你没有提到你使用的Delphi版本;但是我能够在 Delphi 2010 中重现这一点。我收到的确切错误是:[DCC 致命错误] Unit1.pas(36): F2084 Internal Error: URW2306
-
我用Delphi 6、7和XE2编译这段代码,都有内部错误。
标签: multithreading delphi floating-point double