Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
3-55019
sergey32
2002-05-22 16:54
2002.06.17
Делаю Insert в хранимой процедуре


1-55059
Holodilnik
2002-06-05 16:43
2002.06.17
запуск программы по завершению другой


8-55225
Kuzmin_Alex
2002-01-24 23:28
2002.06.17
Передача_Видео


1-55092
Andrew22
2002-05-29 15:23
2002.06.17
Реестр


3-54990
MikNik
2002-05-22 20:39
2002.06.17
Есть ли для Delphi компонент для обработки Alert-ов Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский