О релизах и багах

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

20khz
новенький
Сообщения: 25
Зарегистрирован: 13.10.2005 19:07:40

Сообщение 20khz »

liveliness analysis - анализ области действия (жизни)
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

Странный баг abs-а
FPC 2.0.2, 2.0.3

Код: Выделить всё

var
  minfactor: Integer;
begin
  minfactor:=abs(30000-MillisecondOfTheMinute(now));
  // minfactor = -15656 !!!

  minfactor:=30000-MillisecondOfTheMinute(now);
  minfactor:=abs(minfactor);
  // minfactor = 15656 !!!
end;


Причём такой вариант работает нормально

Код: Выделить всё

var
  minfactor: Integer;
begin
  minfactor:=abs(30-SecondOfTheMinute(now));
  // minfactor = 15
end;
hawke
незнакомец
Сообщения: 2
Зарегистрирован: 06.05.2006 23:36:32

Сообщение hawke »

Позвольте вынести на всеобшее рассмотрение следующий вопрос:
В RTL существует функция FPC_WSTR_ASSIGN призванная реализовыть присвоение для двух WideString'ов. Однако в действительности данная функция почему-то не используется компилятором. Эта ошибка (или, скорее, недочет?) не проявляется, если использовать "стандартную" реализацию для Widestring, но становится критичной, если что-то решили поменять.

(Для повышения совместимости со строками Delphi было бы категорически приятно, если бы комилятор все же вызывал ее.
(дело в том, что строки в Windows не имееют счетчика ссылок, что существенно меняет метод работы с ними)
От себя могу предложить готовый вариант файла wstrings.inc , который в полной мере обеспечивает требуемую функциональность)
Ответить