Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как проверить корректность ввода числа?


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

Автор: Rrader 14.4.2009, 17:04
Функция Val, параметр Code - для целых чисел

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

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

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

 smile 
мож TryStrToInt ??

Автор: Данкинг 14.4.2009, 22:00
Цитата(MetalFan @  14.4.2009,  22:53 Найти цитируемый пост)
мож TryStrToInt ??

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

Автор: Alexeis 14.4.2009, 22:33
  Если число имеет строгий формат, например IP шник, то может подойти TMaskEdit.

Автор: Keeper89 14.4.2009, 22:48
Для целых чисел подойдет как 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');

Автор: Лапоть 15.4.2009, 08:54
Всем спасибо!  smile Я так понимаю, что и Val(), и TryStrToInt() таки внутри себя генерят исключение в случае ошибки, но плюс в том, что его не надо самому ручками обрабатывать. Учитывая менталитет юзеров, буду пользоваться Val() с выдачей подсказки - где наврано! smile 

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

Автор: Лапоть 15.4.2009, 10:38
В реальной программе в Едит вводится либо ГОД, либо ИНТЕРВАЛ ГОДОВ (возможные значения - от 1942 до CurrentYear()).  Так что пикать юзеры запарятся.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)