Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-55196
nea
2002-06-03 20:32
2002.06.17
Фон в MDI


1-55121
Nat21
2002-06-05 22:33
2002.06.17
Спираль


1-55096
Dim!S
2002-06-06 09:51
2002.06.17
Перерисовка DBGrid


3-55010
AFROLOV
2002-05-23 14:31
2002.06.17
Как доступиться до DBF таблицы?


3-55047
Blondin
2002-05-24 14:12
2002.06.17
Подключение к Ораклу




   Наверх