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 то прога вылетает :( Может это вообще невозможно сделать?


Virgo_Style   (2010-03-14 23:11:00) [1]


>  до сих пор не вернулась.


Один только первый пункт сколько времени займет, а их три


KSergey   (2010-03-14 19:41:00) [2]

> Плохиш ©   (13.03.10 17:28) [21]

плохой ты человек
смотри, как далеко послал девушку - до сих пор не вернулась.


MonoLife   (2010-03-14 15:56:00) [3]


> И заставить пользователя прокрутить от нуля до максимума,
>  он тебя навек запомнит

и от максимума до минимума))


Fenik   (2010-03-14 14:25:00) [4]

maxlength := 11; + код из [25].
И всё корректно.


Anatoly Podgoretsky   (2010-03-14 14:24:00) [5]

> MonoLife  (14.03.2010 14:12:35)  [35]

И заставить пользователя прокрутить от нуля до максимума, он тебя навек запомнит


Anatoly Podgoretsky   (2010-03-14 14:23:00) [6]

> Ega23  (14.03.2010 14:07:34)  [34]

Да длина вообще не применима.


MonoLife   (2010-03-14 14:12:00) [7]

Тогда, как вариант, может подойти SpinEdit с настройками max и min value


Ega23   (2010-03-14 14:07:00) [8]


> зачем 10, хватит и 8 символов)


8 в любом случае не хватит. Минимум 9, если в hex-формате


MonoLife   (2010-03-14 14:03:00) [9]


> Т.е. '2147483800'

зачем 10, хватит и 8 символов)
хм.. опять же, зависит от задачи.. чет, я не подумал..


Ega23   (2010-03-14 13:23:00) [10]


> Т.е. '2147483800' отличается длиной от '2147483100'?


С точки зрения TEdit.MaxLength - нет. Более того, оно спокойно и '$FFFFFFFFF' сожрёт.

Хотя фиг его знает, что MonoLife © имел ввиду...


Демо   (2010-03-14 13:19:00) [11]


> MonoLife ©   (14.03.10 05:55) [30]
> > Как сделать так чтобы если мы вводим в Edit любое число
> > превышающее диапазон Integer...задать maxlength в Edit,
>  чтоб не было возможности вводить "превышающее диапазон"

Т.е. '2147483800' отличается длиной от '2147483100'?


MonoLife   (2010-03-14 05:55:00) [12]


> Как сделать так чтобы если мы вводим в Edit любое число
> превышающее диапазон Integer...

задать maxlength в Edit, чтоб не было возможности вводить "превышающее диапазон"


Ega23   (2010-03-13 20:40:00) [13]


> Ты это к чему? В [0] вопрос про Integer.


Это к тому, что очень аккуратно надо.


Fenik   (2010-03-13 20:23:00) [14]

> Ega23 ©

Ты это к чему? В [0] вопрос про Integer.


Ega23   (2010-03-13 19:58:00) [15]

почувствуй разницу между c : Cardinal;и c : Integer;


Ega23   (2010-03-13 19:56:00) [16]


> Fenik ©   (13.03.10 19:28) [25]


procedure TForm1.Button1Click(Sender: TObject);
var
 c : Cardinal;
 Code : Integer;
begin
 Val('$FFFFFFFF', c, Code);
 if Code <> 0 then
   ShowMessage('Out of range')
 else
   ShowMessage(IntToStr(c));
end;


Fenik   (2010-03-13 19:28:00) [17]

> Демо ©   (13.03.10 18:42) [23]

procedure TForm1.Button1Click(Sender: TObject);
var
  ValueInt64: Int64;
  ValueInt32: Integer;
  Code: Integer;
begin
  Val(Edit1.Text, ValueInt64, Code);
  if Code = 0 then
  begin
     Val(Edit1.Text, ValueInt32, Code);
     if Code <> 0 then
        ShowMessage('Range out!')
     else
        ShowMessage('Everything is OK.');
  end
  else
     ShowMessage('Invalid value!');
end;


Ega23   (2010-03-13 18:59:00) [18]


> Kinder, Küche, Kirche


+1


Демо   (2010-03-13 18:42:00) [19]


> Fenik ©   (13.03.10 18:35) [22]


В условии задачи не было проверки на прочую корректность ввода числа кроме превышения границ Integer-)


Fenik   (2010-03-13 18:35:00) [20]

procedure TForm1.Button1Click(Sender: TObject);
var
 Value, Code: Integer;
begin
 Val(Edit1.Text, Value, Code);
 if Code <> 0 then
   ShowMessage('range out!')
 else
   ShowMessage('Everything is OK');
end;


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

Наверх

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