Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 17:58   #1
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
Вопрос Проверка перменной на соответствие типу

Добрый день.
Есть у меня поле, в которое пользователь должен вводить число (Integer).
Если ввести туда "чего-попало" естественно возникает ошибка. Хочу исключить подобное безобразие)))
Вопрос: Как выполнить проверку - является ли введенный текст числом?
Заранее спасибо!
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 01.02.2011, 18:01   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
trystrtoint()
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.02.2011, 18:01   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)try except end;
2)TryStrToInt
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.02.2011, 18:04   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Можно просто заключить в try exec end; можно strtointdef если ошибка вернёт значение по умолчанию, можно TryStrToInt с возвратом ложь если неудалось.
vovk вне форума Ответить с цитированием
Старый 01.02.2011, 18:07   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

...или запретить ввод любых символов кроме цифр.
_SERGEYX_ вне форума Ответить с цитированием
Старый 01.02.2011, 18:14   #6
Slippy
Пользователь
 
Аватар для Slippy
 
Регистрация: 29.12.2010
Сообщений: 55
По умолчанию

Цитата:
...или запретить ввод любых символов кроме цифр.
в этом случае + длину поля ограничивать. чтобы исключить overflow =)
Теория – это когда все известно, но ничего не работает. Практика – это когда все работает, но никто не знает почему. Мы объединяем теорию и практику: ничего не работает и никто не знает почему ©
Slippy вне форума Ответить с цитированием
Старый 01.02.2011, 18:27   #7
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Нащупал в DelphiWorld:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ',' then
    Key := DecimalSeparator; // запятую заменяем на разделитель для числа

  if Key = '.' then
    Key := DecimalSeparator; // точку заменяем на сепаратор (на всякий случай)

  if not (Key in ['0'..'9','-',DecimalSeparator,#8,#13]) // символы которые пропускаются
    or ((Key = DecimalSeparator) // все цифры знак минус разделитель
    and (POS (DecimalSeparator, Edit1.Text) > 0)) // запрет на второй сепаратор
    or ((Key = '-') and (POS ('-', Edit1.Text) > 0)) // запрет на второй минус
    or ((Key = '-') and (Edit1.SelStart <> 0)) // запрет на минус не вначале цифры
    then // (можно и предыдущей строчки но так лучше для понимания)
  begin
      Key := #0; // запрещенный символ заменяем нулем
      MessageBeep (MB_OK); // биб в спикир
  end;
end;
Подкоректировал под свои задачи - работает как часы))) Спасибо за советы

Цитата:
Сообщение от Slippy Посмотреть сообщение
в этом случае + длину поля ограничивать. чтобы исключить overflow =)
Можно подробнее: Что такое overflow и чем это грозит?
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 01.02.2011, 18:56   #8
Slippy
Пользователь
 
Аватар для Slippy
 
Регистрация: 29.12.2010
Сообщений: 55
По умолчанию

Цитата:
Что такое overflow и чем это грозит?
переполнение.
под переменную, в зависимости от типа данных отводится определённое количество памяти и если попытаться запихнуть в неё больше - получите исключение
Теория – это когда все известно, но ничего не работает. Практика – это когда все работает, но никто не знает почему. Мы объединяем теорию и практику: ничего не работает и никто не знает почему ©
Slippy вне форума Ответить с цитированием
Старый 01.02.2011, 19:21   #9
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Ясно! Спасибо!!!
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка столбцов на соответствие ZSV Microsoft Office Excel 22 22.09.2010 18:32
Соответствие алгоритма и кода @Manya@ Общие вопросы C/C++ 0 08.05.2010 15:45
Проверить соответствие слов begin end..... RasKolnikoV Помощь студентам 3 13.05.2009 16:17
Access + ADO, проверка на соответствие (Login-Pass) nowmax БД в Delphi 5 23.02.2009 16:35
не соответствие типов amandra SQL, базы данных 6 30.06.2008 18:04