Главная страница
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.01 c
1-55051
MAN-IN-RED
2002-06-03 20:06
2002.06.17
Есть парочка вопросов к мастерам:


3-55045
3asys
2002-05-23 14:54
2002.06.17
Как программно вызвать диалог создания строки подключения?


3-55024
dyacha
2002-05-22 12:19
2002.06.17
Доступ к базам БЕСТ


6-55245
JK2002
2002-04-09 12:48
2002.06.17
Работа сокетов или TnmPOP3, TnmSMTP через proxy сервер?


4-55363
RazorbladE
2002-04-16 16:04
2002.06.17
Macro: ListView_GetItemText