В Delphi и почему нельзя напрямую сопоставить типы потоков с плавающей запятой? - PullRequest
4 голосов
/ 08 декабря 2011

Я проверял это в 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 Ответ

3 голосов
/ 08 декабря 2011

Это явно ошибка в компиляторе. Я сообщил об ошибке в Quality Central, QC # 101656 . Ошибка затрагивает только 32-битный компилятор, но это не очень утешит кого-либо!

Вы можете обойти это, поместив свои переменные в запись, подобную этой:

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

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