![]() |
|
|
![]()
|
|
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
В Edit пользователь может вводить только значания типа: 29.01.2009 12:30:00
Как отследить после вода пользователя, что он ввел, например, буквы и предупредить об этом. Например 29.01.2009 12:30:00сс. Мне надо понять, что присутсвуют буквы любого регистра. Надо проанализировать уже после ввода пользователя, а не вовремя ввода... |
|||
|
||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Суть вопроса в "как проверить присутсвуют ли буквы любого регистра" или "как проанализировать уже после ввода пользователя, а не вовремя ввода..." ?!
Это сообщение отредактировал(а) Comm - 29.1.2009, 18:11 -------------------- =))))) ![]() |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Надо проанализировать уже после ввода пользователя. Это web приложение. Проверять ввод будет код сервера. Пользователь введет данные на html странице. Поэтому после ввода пользователя мне надо проверить серверным кодом, наличие букв любого регистра и отослать пользователю сообщение о не верном вводе если есть буквы. |
|||
|
||||
| taiven |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 3 Всего: 9 |
если значения будут только типа 29.01.2009 12:30:00, то не проще ли проверять каждый символ строки на несовпадение с одним из допустимых символов?
|
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Здесь будет любое дата время 11.01.2010 15:30:00 и т.п. Мне также надо отследить наличие пробела, если пользователь напишет так 11.01.201015:30:00 то предупредить его вставить пробел. |
|||
|
||||
| taiven |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 30.6.2008 Репутация: 3 Всего: 9 |
ну, как вариант приблизительно так можно сделать:
Это сообщение отредактировал(а) taiven - 29.1.2009, 20:21 |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Лена, ты как я понимаю юзаешь компоненты IntraWeb. В данном случае IWEdit. Я бы использовал класс TMask
Добавлено через 1 минуту и 14 секунд ЗЫ. Жаль что самой маски в IWEdit вроде нет. Хотя быть может она где-то и зарыта |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Совершенно верно. Если использовать маски, то я так понимаю, мне придется делать несколько масок. Ведь дата типа 9.01.2009 12:30:00 или 29.01.2009 8:30:00 тоже корректны... Дата время введенное пользователем используется в коде так: t->ADOQuery2->Parameters->ParamByName("datastart")->Value = IWEdit1->Text; Сейчас у меня реализовано ряд проверок, но выглядит это криво:
Жаль что нет нормального компонета выбора даты времени в IntraWEB Это сообщение отредактировал(а) Лена - 30.1.2009, 11:34 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
>Edt->Text = "00.00.0000 00:00:00";
Это я так понимаю шаблон, чтобы при старте приложения пользователь его увидел? У меня заполнение этих полей происходит при первом заходе пользователя на страницу. Я по умолчанию предлагаю пользователю текущие сутки: TDateTime T(Now()); IWEdit1->Text = T.DateString() + " 0:00:00"; T = T + 1; IWEdit2->Text = T.DateString() + " 23:59:59"; Я так понимаю, в коде с TMask ничего менять не надо? А может написать так: IWEdit1->Text = T.DateString() + " 00:00:00"; Тогда принудить к жесткой маске: mask = new TMask("[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]"); Это: TMask *mask; я объявлю в классе формы т.к. в статье написано, что глобальные переменные не приветсвуются в IntraWeb. Это сообщение отредактировал(а) Лена - 30.1.2009, 12:16 |
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
совершенно верно. код не совсем мне ясен - но если конечная строка ровна моему шаблону то да
конечно. глобальная переменная введена чисто для примера. глобальные переменные везде зло. не только в IntraWeb |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Вообщем все работает как надо с маской
Только оставила эту проверку также в коде:
т.к. пользователь может случайно указать что в году, например, 15 месяцев |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |