Вниз
Скачать: 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.013 c
3-55001
Chainik
2002-05-23 10:28
2002.06.17
Что делать с DBComboBox ом?


14-55274
Olgerd
2002-05-11 19:49
2002.06.17
А ты добавил свою функцию в UBPFD?


3-55049
AlekseyK
2002-05-24 12:06
2002.06.17
Подскажите в чем ошибка


14-55292
evgeg
2002-05-10 19:27
2002.06.17
---|Ветка была без названия|---


7-55324
RM
2002-03-20 21:01
2002.06.17
Как узнать дату BIOS из под Windows XP?




   Наверх