Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Как проверить переполнение?   Найти похожие ветки 

 
Navi1982 ©   (2002-06-05 13:23) [0]

Ситуация такая, что надо узнать "произошло ли переполнение при сложении? и если да то ..."

Например такое возможно?

x:=x+10;
if переполнение then действие.


 
Shaman_Naydak ©   (2002-06-05 13:25) [1]

try
x:=x+10;
except
действие
end;

Ну учите же язык-то!


 
Kaban   (2002-06-05 13:35) [2]

2 Shaman_Naydak
Ты бы попробовал сначала на практике, а потом писал

var X : Byte;

try
x:=250;
x:=x+10;
except
действие
end;

не вызывает ошибку

может быть так:
if Max(x) - 10 < x then
Написать функцию Max, которая возвращала бы максимальное значение для каждого типа переменной



 
MBo ©   (2002-06-05 13:50) [3]

>не вызывает ошибку
обсуждается еженедельно - вычисление на этапе компиляции, и неиспользуемая переменная выбрасывается при оптимизации

i:shortint;

procedure TForm1.Button1Click(Sender: TObject);
begin
try
i:=i+30;
label1.caption:=inttostr(i);
except
///
end;
end;


 
Kaban   (2002-06-05 14:05) [4]

2MBo
Ни и что?
сейчас попробовал
для переменной типа Byte r 250 прибавил 30 получил в caption значение 24
Мой ответ неверный?






 
MBo ©   (2002-06-05 14:07) [5]

включил Range Checking?


 
Kaban   (2002-06-05 14:13) [6]

2MBo Ну да правильно не стоит(в смысле флажок).


 
Kaban   (2002-06-05 14:18) [7]

Мои извенения 2 Shaman_Naydak


 
Digitman ©   (2002-06-05 17:54) [8]

строго частный случай.
тем не менее решает задачу :

label
ovrflow;
var
x: integer;
...
x:= 2147483646;
x:= x + 10;
asm
mov eax, [a]; // чтобы оптимизатор не лез не в свои дела))
jo ovrflow
end;
exit;
ovrflow:
showmessage("Overflow !");


 
Digitman ©   (2002-06-05 17:54) [9]

строго частный случай.
тем не менее решает задачу :

label
ovrflow;
var
x: integer;
...
x:= 2147483646;
x:= x + 10;
asm
mov eax, [x]; // чтобы оптимизатор не лез не в свои дела))
jo ovrflow
end;
exit;
ovrflow:
showmessage("Overflow !");



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-54981
Proton
2002-05-22 07:56
2002.06.17
Выборка первых 10 записей


6-55252
dymka
2002-04-10 10:10
2002.06.17
Многопоточная загрузка файлов по TCP/IP


14-55272
Malder
2002-05-06 23:31
2002.06.17
Сотовые телефоны


14-55316
Владимир Комиссаров
2002-05-13 14:45
2002.06.17
расширение палитры Дельфи 5


1-55075
ЗЛ
2002-06-03 14:26
2002.06.17
сть компонент StringGrid и у меня она состоит из одной строчки с