Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Контроль превышения размера числа


Страницы:   1 2 3

Первокурсница ©   (2010-03-13 15:14:00) 

Как сделать так чтобы если мы вводим в Edit любое число превышающее диапазон Integer (-2147483648..2147483647) программа не вылетала бы а показывала бы сообщение "Превышен размер числа"?
Пишу вот так:

procedure TForm1.Edit2Change(Sender: TObject);
begin

    If (StrToInt(Edit2.Text)>2147483646) OR (StrToInt(Edit2.Text)<-2147483647)
then begin ShowMessage('Выход за границы массива!');
    Edit1.Text:='20';
    end;
end;


Но если набираю допустим 9999999999 или 6768435794357 то прога вылетает :( Может это вообще невозможно сделать?


Плохиш   (2010-03-13 17:28:00) [21]


> Первокурсница ©   (13.03.10 15:49) [12]
>
> Легче всего сказать "Ах какие же студенты пошли глупые ".
>

Kinder, Küche, Kirche


Anatoly Podgoretsky   (2010-03-13 17:27:00) [22]

> {RASkov}  (13.03.2010 16:50:17)  [17]

Не поможет, в указаном случае результат будет true


Игорь Шевченко   (2010-03-13 17:08:00) [23]


> Легче всего сказать "Ах какие же студенты пошли глупые ".


Студенты пошли не сколько глупые, сколько наглые


Демо   (2010-03-13 16:56:00) [24]


const
 lInt='-2147483649';
 hInt='2147483648';
var
 Len: Integer;
begin
 Len := Length(Edit2.Text);
 if Len<Length(hInt) then Exit;
 if (Len=Length(hInt)) and (Edit2.Text<hInt) then Exit;
 if (Len=Length(lInt)) and (Edit2.Text[1]='-') and (Edit2.Text<lInt) then Exit;
 ShowMessage('Выход за границы массива!');
end;


{RASkov}   (2010-03-13 16:50:00) [25]

> [0] Первокурсница ©   (13.03.10 15:14)

TryStrToInt


И. Павел   (2010-03-13 16:33:00) [26]


> Первокурсница ©

Есть хорошая вещь - try - помогает при обработки разных ошибок, не только при выходе за границы диапазона. Почитайте про это в справке. Есть и другие способы.

Офтопик:
Синтаксис языка можно выучить и по книжке. Даже самый одаренный преподаватель из куска дерева сможет сделать только буратино... (это я не о ком-то конкретно, а вообще о нерадивых студентах).


oldman   (2010-03-13 15:51:00) [27]


> Первокурсница ©   (13.03.10 15:34) [8]
> Требует переменную типа BOOLEAN
>
> oldman ©   (13.03.10 15:42) [9]
> а в справке чего написано?


не имеет никокого отношения ни к уму студентов, ни преподавателей.


Первокурсница   (2010-03-13 15:51:00) [28]

Если Вам влом помочь нормальным советом а не вздохами "О времена, о нравы!" - так и проходите мимо этой темы! А дохлую лирику разводить не нужно.

Спасибо за внимание.


oldman   (2010-03-13 15:50:00) [29]

"Хамить не надо по телефону..." (Булгаков ©)


Первокурсница   (2010-03-13 15:49:00) [30]

Легче всего сказать "Ах какие же студенты пошли глупые ". А может преподаватели пошли ленивые? В Ваши 60-е годы и требования были другие, и преподаватели были другие, и информатика была другая (если она у Вас вообще была). Да, так нас учат. Да, всё так плохо. Кто в этом виноват? Наверно я! У нас в институте анекдот бородатый ходит: разговаривают 2 препода в туалете, один другому говорит: ах, как же у нас всё замечательно, высшие технологии, умные люди кругом, зарплата достойная, вот если бы не студенты - жизнь была бы прекрасна!


oldman   (2010-03-13 15:44:00) [31]

Login: Первокурсница
Дата рождения: 20.03.1992
Образование: высшее

"Врать не надо по телефону..." (Булгаков ©)


Игорь Шевченко   (2010-03-13 15:43:00) [32]

Чему-то вас не тому на первом курсе учат в заборолитейном ПТУ


oldman   (2010-03-13 15:42:00) [33]

а в справке чего написано?


Первокурсница   (2010-03-13 15:34:00) [34]

Требует переменную типа BOOLEAN


Anatoly Podgoretsky   (2010-03-13 15:30:00) [35]

Теперь попробуй с приведением Int64(2147483646)


Первокурсница   (2010-03-13 15:27:00) [36]

StrToInt64 - теперь она не вылетает если ввожу большое число, но и сообщение не показывает.


Anatoly Podgoretsky   (2010-03-13 15:24:00) [37]

> Первокурсница  (13.03.2010 15:14:00)  [0]

StrToInt64


oldman   (2010-03-13 15:20:00) [38]


> Первокурсница ©   (13.03.10 15:18) [3]


превышение не в 2147483645, а в StrToInt
:)


Первокурсница   (2010-03-13 15:18:00) [39]

Если я напишу 214748364 5то ничего не изменится


oldman   (2010-03-13 15:17:00) [40]


> if StrToInt(Edit2.Text)>2147483646


класс!!!
вот тебе и вылет по превышению.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо