我已經在Delphi 6,7和XE2中測試過了,都顯示這個錯誤。
我想在線程直接比較兩個浮點數,就像這樣:在Delphi中,爲什麼不能直接比較threadvar類型的浮點數?
threadvar
a,b : Double;
procedure test;
begin
if a > b then
;
end;
但編譯時,DCC發生內部error.So我改成了這樣:
threadvar
a,b : Double;
procedure test;
begin
if a - b > 0 then
;
end;
錯誤消失了,爲什麼?
在Delphi編譯的「內部錯誤」一般是不是應該發生的。換句話說,這很可能是一個來自Embarcadero的人需要解決的問題,而不是StackOverflow上的某個人可以「回答」的編程問題。 –
所以,如果我直接複製你的第一塊代碼,並把它作爲一個單位,我得到一個內部錯誤?難道是因爲你在'程序測試'中使用之前沒有初始化a或b? –
你沒有提到你正在使用的Delphi版本;但是我能夠在Delphi 2010中重現這一點。我收到的確切錯誤是這樣的:[DCC致命錯誤] Unit1.pas(36):F2084內部錯誤:URW2306 – vcldeveloper