Ламовый вопрос [C++ Builder]

Ivan826

Надо что бы пользователь вводил только числа
Как это сделать?
Понимаю что есть 2 пути: запретить вводить всё кроме цифр или делать проверку когда уже данные введены. Как это реализовать в этой системе?

evgen5555

написать что-то навроде
convert_to_string(convert_to_int(unsafe_string

Ivan826

не, хачу если там не число(незнаю как проверить что бы слал нахуй(понял как сделать очищал поле(это тоже и помещал курсор в поле (не знаю как)
Что нибудь типа is_numeric есть наверное, как пишется? (синтаксиса нихуа непомню)

Julie16

Подозреваю что у разнообразных полей ввода там есть такая штука как валидатор. Рекомендую поискать в помощи на предмет validate. Если нет - то всегда можно заменить OnKeyPress(или как там у вас это называется) и смотреть что вводит пользователь.

evgen5555

>Что нибудь типа is_numeric есть наверное, как пишется? (синтаксиса нихуа непомню)
blyadermo = TRUE;
if(govnostring != null)
while(govnostring++)
blyadermo &&= isnum(*govnostring);
return blyadermo;
Так, что ли?

Julie16

Аццтой. Можно возвратить неудачу после первого же плохого символа. Хотя для P4 и не очень длинных строк это может быть эффективнее

bastii

А числа целые? А то если нет, тогда лучше через какие-нибудь виндовые апи или соответствующие им в Бильдере, чтобы правильно учитывалась локализация.

Ivan826

Ну да, целые. Блин, ну неучто нельзя по сабмиту провести проверку на то, является ли значение этого поля числом или нет? Шо за язык?

psihodog

действительно, язык говно...

Ivan826

Да блин! Ну простейшая же задача! Хоть кто-нить подскажите! А я с этим число оперирую, и у меня всё пиздой накрвается

olga1969

atoi ?

olga1969

вот, нашел в своей одной старой билдеровской вещи:

AnsiString str1 = Edit1->Text
try {
float time = StrToFloat(str1);
// other bla bla bla
}
catch(EConvertError& e){
// error bla bla bla
}

В общем, не уверен, в тему или нет, может поможет...

enochka1145

А числа случайно не целые? Тогда можно было бы сделать счётчик как на спидометре.

Slavaga

не, хачу если там не число(незнаю как проверить что бы слал нахуй(понял как сделать очищал поле(это тоже и помещал курсор в поле (не знаю как)
Поле ввода типа TEdit?
double Number;
try
{
Number = Edit1->Text.ToDouble;
}
catch(Exception &e)
{
Edit1->Text = "";
Edit1->SetFocus;
ShowMessage("Отсылаю нахуй!");
}

gopnik1994

для положительных чисел
 
if (StrToFloatDef(Edit1->Text, -1) <= 0)
ShowMessage("Отсылаю нахуй!");
Оставить комментарий
Имя или ник:
Комментарий: