| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Фильтрация символов... |
| Автор: pomogite 3.5.2006, 15:43 |
| Как можно в Delphi 7 сделать так чтобы в TEdit можно было вводить только определённые символы? |
| Автор: Alexeis 3.5.2006, 15:46 |
| На палитре additional есть компонент TMaskEdit - он для этого и служит. |
| Автор: XSInet 3.5.2006, 15:46 |
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key = 'L' then MessageBoxA(0, 'LOL', nil,0); end; Событие OnKeyPress |
| Автор: Matematik 3.5.2006, 15:47 | ||
|
| Автор: Guedda 3.5.2006, 15:56 | ||
|
| Автор: Yanis 3.5.2006, 15:59 | ||
Нужно создать константу - множество с набором/последовательностью запрещённых символов, а затем в прогремме при помощи оператора in проверять наличие символа в множестве:
|
| Автор: pomogite 3.5.2006, 16:10 | ||
как можно сделать фильтрацию вот в этом коде?
|
| Автор: Yanis 3.5.2006, 16:16 |
А в справку не пробовал заглядывать? |
| Автор: Alexeis 3.5.2006, 16:28 |
| pomogite, какие символы должны оставаться? Маскедит - требует определенного числа символов иначе остальное будет заполнено пробелами. Если число символов неизвестно то удобней разбирать строку. Способ с обработчиком KeyPress имеет один недостаток - если текст вставлять при помощи буфеа обмена, то он пойдет в обход этого обработчика. Уточните задачу, какие символы не должны попадать и что за данные вводятся |
| Автор: pomogite 3.5.2006, 16:32 |
| Вводится ip адресс |
| Автор: Yanis 3.5.2006, 16:33 |
и.... |
| Автор: Alexeis 3.5.2006, 16:37 | ||||
Добавлено @ 16:41 если не нравятся подчеркивания, то
|
| Автор: pomogite 3.5.2006, 16:50 |
| а как сделать чтоб урл вводить тоесть только / . и англ. буквы |
| Автор: Alexeis 3.5.2006, 17:03 |
| pomogite, с этим хуже, длина текста не определена и красивого решения уже не получится, нужно будет обрабатывать событие onChange, а в нем перебирать символы и проверять все ли символы допустимы. Для коректного решения этой задачи можно воспользоваться "тяжелой артилерией" - регулярными выражениями и проверять имеется ли в тексте регулярное выражение соответствующее интернет адресу если да, то брать его, а лишний текст удалять. Но это не простой вариант, кроме того придется скачивать специальный компонент и учить синтаксис регулярных выражений. |
| Автор: pomogite 3.5.2006, 17:07 |
| мда похоже придётся оставить всё как есть... |
| Автор: syan66 5.5.2006, 10:50 | ||||||
Ой, ну зачем же так все усложнять......
Для ручного ввода:
Для copy/paste:
|
| Автор: Alexeis 5.5.2006, 12:10 |
| syan66, и что ваш код обнаружит ошибку в такой строке www.http://ya.ru. Я же сказал для КОРРЕКТНОЙ! - кроме того в строке могут идти параметры для php например адресс этого вопроса http://forum.vingrad.ru/index.php?showtopic=94422&st=15 правельный, а ваш код скажет, что нет... |
| Автор: syan66 5.5.2006, 12:56 |
| Отлично! А правила поменять нельзя? В данном конкретном случае (для url) : 1. добавить в set недостающие символы 2. описать правило, по которому http:// всегда Pos(1) ???? |
| Автор: Alexeis 5.5.2006, 13:05 |
| syan66, О! Как раз это и делает TRegExpr - красиво, быстро, а главное унифицировано. Более того позволяет гибко менять эти самые правила без изменения исходного кода! |
| Автор: vv3 5.5.2006, 14:24 |
| Да, я же не против... Просто я лично не люблю сторонние компоненты, которые через год искать приходится, поскольку Delphi переустанавливал, необходимости в них не было, потом старый проект поднять приходится, а тут... Class not found (syan66 - that's me) |
| Автор: Yanis 5.5.2006, 16:33 |
Не все же так часто свои проекты переделывают... |
| Автор: vv3 5.5.2006, 16:48 |
Ага... Вот в том-то и дело, что нечасто. |
| Автор: SniyLSD 7.7.2008, 12:25 | ||
А как сделать, чтобы определенны й символ, если печатается в TEdit, то только первым, или вообще не печатается, вроде код должен получиться таким :
какой оператор нужно дописать? нужно сделать, чтобы знак '-' печатался только в начале или вообще не печатался, если первый символ уже напечатан. |