Показать сообщение отдельно
  #4  
Старый 15.03.2009, 23:54
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
По умолчанию

Цитата:
Сообщение от Страдалецъ
1. В дельфи Integer уже давно в диапазоне -2147483648..2147483647
2. Надо еще обрабатывать ситуацию с отрицательным числом.
а посему надо наверное так:
Код:
var
x,y: Integer;
begin
if (x+y>High(Integer)) or (x+y<Low(Integer)) then
ShowMessage('Ошибка')
else
ShowMessage(IntToStr(x+y))
end;

Этот код нерабочий.
Т.к при попытке сложить x+y сумма записывается опять в Integer, а то что не влезло - обрезается. Поэтому данное условие всегда будет возвращать False;

Необходимо вручную преобразовывать один из арументов в Int64 тогда и сумма будет Int64
Код:
if (Int64(x)+y>High(Integer)) or (Int64(x)+y<Low(Integer)) then
  ShowMessage('Ошибка')
 else
  ShowMessage(IntToStr(x+y))
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием