![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Контроль превышения размера числа
Первокурсница © (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
класс!!!
вот тебе и вылет по превышению.