Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как проверить корректность ввода числа? 
V
    Опции темы
Лапоть
Дата 14.4.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 3.4.2009

Репутация: нет
Всего: 2



Подскажите пожалуйста - есть ли в Дельфи аналоги сишных функций isAlpha(), isDigit(), atoi()?
Задачка-то тривиальная - в TEdit вводится значение года и надо проверить корректность этого ввода.
Ничего, кроме StrToInt() в скобках try...except не придумал. 

Это сообщение отредактировал(а) Лапоть - 14.4.2009, 15:16
PM MAIL   Вверх
Rrader
  Дата 14.4.2009, 17:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Функция Val, параметр Code - для целых чисел


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Данкинг
Дата 14.4.2009, 17:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Лапоть @  14.4.2009,  16:15 Найти цитируемый пост)
Ничего, кроме StrToInt() в скобках try...except не придумал. 

ИМХО - это лучшее, что можно придумать. Если ещё некая функция "TryInToStr", но в ней без поллитры не разберёшься.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
MetalFan
Дата 14.4.2009, 21:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Данкинг @  14.4.2009,  17:21 Найти цитируемый пост)
Если ещё некая функция "TryInToStr", но в ней без поллитры не разберёшься.

 smile 
мож TryStrToInt ??


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Данкинг
Дата 14.4.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(MetalFan @  14.4.2009,  22:53 Найти цитируемый пост)
мож TryStrToInt ??

Ну да, она самая. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Alexeis
Дата 14.4.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Если число имеет строгий формат, например IP шник, то может подойти TMaskEdit.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Keeper89
Дата 14.4.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Для целых чисел подойдет как Val, так и TryStrToInt как уже сказали выше.

Вот примерчик для последней:

Описание
Код

function TryStrToInt(const s: string; out i : integer): boolean;
Converts a string to an integer, returns False if string does not represent a valid number.

Код

var syold : string;
    iyold : integer;    

syold := InputBox('Birth Year', 'Please enter birth year', '1973'))

if TryStrToInt(syold, iyold) then ShowMessage('You are now ' + IntToStr(2003 - iyold) + 'years old!')
                             else ShowMessage('Please enter a number');


Это сообщение отредактировал(а) Keeper89 - 14.4.2009, 22:51


--------------------
PM MAIL WWW   Вверх
Лапоть
Дата 15.4.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 3.4.2009

Репутация: нет
Всего: 2



Всем спасибо!  smile Я так понимаю, что и Val(), и TryStrToInt() таки внутри себя генерят исключение в случае ошибки, но плюс в том, что его не надо самому ручками обрабатывать. Учитывая менталитет юзеров, буду пользоваться Val() с выдачей подсказки - где наврано! smile 
PM MAIL   Вверх
Poseidon
Дата 15.4.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Лапоть @  14.4.2009,  15:15 Найти цитируемый пост)
TEdit вводится значение года и надо проверить корректность этого ввода
Да сделай проще, используй TDateTimePicker. Посавь в нем маску YYYY и делов-то.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Лапоть
Дата 15.4.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 3.4.2009

Репутация: нет
Всего: 2



В реальной программе в Едит вводится либо ГОД, либо ИНТЕРВАЛ ГОДОВ (возможные значения - от 1942 до CurrentYear()).  Так что пикать юзеры запарятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.