Я хочу проверить ввод от Edit Text, если ввод не целое число, появится окно сообщения или Показать сообщение, я использую
if(input->Text.ToIntDef(1)){
//instruction
}
но когда я запускаю приложение, if
состояние всегда true
, хотя я ввел целое число в Редактировать текст (я ввел 5000, 4500, 7000, 7500, 2000, 2500)
Простым способом может быть сканирование содержимого строки, если вы обнаружите что-либо, что не является цифрой, вы можете остановить сканирование и предположить, что число не является целым числом.
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
Исключение, которое вы можете в основном просто поймать.
Других решений пока нет …