Я работаю над приложением с картой и не хочу, чтобы человек мог ввести недопустимую точку на карте (например, широта и долгота).
Допустим, у вас есть панель, которая выглядитчто-то вроде этого.Обратите внимание, не по кодам, как это выглядит, просто как это будет выглядеть, если вы посмотрите на приложение:
[My great application]
Textbox1 [XX:XX:XX]
Textbox2 [XX:XX:XX]
Textbox3 [XX:XX:XX]
Pushbutton [APPLY]
Моя главная проблема
У меня нет возможности узнатьесли то, что кто-то вводит, находится прямо в текстовых полях.Мой TextBox ожидает 3 набора целых чисел [XX: XX: XX].Ничто не ниже 00, и ничто не выше 99 (строго 2 цифры).Для этого примера я покажу только int, чтобы он был коротким:
int myInt = NULL; //Don't want garbage data here
bool isValid = false;
//Gets input and sets textbox to myInt
std::string myString = std::to_string(myInt); //Cast int to a string
If(myString.length() - 1 == 0) //NULL intToString.length() == 1?
{
std::cout << "Incorrect, please try again" << std::endl;
}
else
{
isValid = true;
}
if(isValid)
{
//applyChanges(); <-- MY INTS WOULD GO INTO THIS
}
, тогда я быстро понял, что 0-9 полностью допустимы.(00, 01, ..., 09).Так что это не сработает.
Мой вопрос
Как мне проверить, правильно ли введенные пользователем данные?Это не совсем имеет смысл для меня.Я не уверен, что еще я могу сделать, кроме проверки длины.
В общем, я хочу найти способ получить условие, чтобы, когда все хорошо, ТОГДА isValid = true;
Примечания
- Я могу получить прямой доступ ко всем данным в текстовых полях
- У меня есть возможность проверить на получение или потерю фокуса