validation — Как проверить, что входные данные из editText являются целыми числами в переполнении стека

Я хочу проверить ввод от Edit Text, если ввод не целое число, появится окно сообщения или Показать сообщение, я использую

if(input->Text.ToIntDef(1)){
//instruction
}

но когда я запускаю приложение, if состояние всегда true, хотя я ввел целое число в Редактировать текст (я ввел 5000, 4500, 7000, 7500, 2000, 2500)

0

Решение

Простым способом может быть сканирование содержимого строки, если вы обнаружите что-либо, что не является цифрой, вы можете остановить сканирование и предположить, что число не является целым числом.

bool is_integer(const char* input) {
while(*input) {
if (*input < '0' ||  *input > '9') {
return false;
}
++input;
}
return true;
}

Приведенный выше простой подход также рассматривает пустую строку как целое число, это просто изменить. Более того, любые пробелы во входных данных приведут к тому, что функция будет обрабатывать ввод как нецелочисленный. Если вы хотите, чтобы пропуски игнорировались, вы можете обрезать ввод перед передачей его в функцию.

Из вашего примера я получаю подозрение, что вы используете VCL-подобный фреймворк: FireMonkey из C ++ Builder, этот фреймворк имеет метод в своем классе строк по умолчанию, который называется ToInt насколько я помню (без Def суффикс), который попытается проанализировать строку как целое число, если не сможет, он выдаст EConvertError Исключение, которое вы можете в основном просто поймать.

0

Другие решения

Других решений пока нет …