Шаблон для ввода некоторого набора символов | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Положим, есть символьная строка myvar длиной 30 символов.
myvar=space(30) Пользователь может/должен ввести в эту myvar строго ограниченный набор символов. Разрешается ввод: - цифр от 0 до 9 - буквы Я - не более одного раза - символов chr(45) (дефис) и chr(46) (точка) Порядок следования допустимых символов произвольный. В реальности это не совсем так, но для "упрощения" пусть будут вот такие ограничения. Допустим, ввод будет выполняться так (таки FPD) : @ 10, 10 GET myvar read Вопрос. Каким образом можно сделать так, чтобы переменная myvar (может быть, после выполнения ввода и обработки) содержала только допустимые символы? Ну, понятное дело, что можно посимвольно проверить, является ли символ допустимым для myvar. Или использовать функции CHRTRAN() или STRTRAN(). Но, может быть, есть способ получше? Исправлено 4 раз(а). Последнее : Simple777, 16.10.21 11:35 |
Re: Шаблон для ввода некоторого набора символов | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Сделал покамест посимвольную проверку в цикле на допустимость введённых символов с использованием опоператора $
... IF SUBSTR(myvar,m.i,1)$[0123456789Я.-] юзеру ENDIF ... В смысле достаточно юзеру показать козу, а дальше пусть исправляет сам. |
Re: Шаблон для ввода некоторого набора символов | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Можно без цикла:
Цитата:Теоретически можно ловить всё "на лету", заменив GET/READ на свою функцию ввода, основанную на INKEY(), но не уверен, что в общем случае это будет "получше". Можно даже сохранить GET/READ, подключая некоторую функцию, основанную на ON KEY LABEL, в WHEN и отключая её в VALID (то есть сделать аналог KeyPress в VFP). Исправлено 7 раз(а). Последнее : akvvohinc, 16.10.21 15:51 |
Re: Шаблон для ввода некоторого набора символов | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Из пушки по воробьям стрелять не будем, и предложенный вариант с EMPTY() это как раз то, что я имел в виду, но не догадался, как сделать без цикла. Так что супер!
Одно лишь уточнение. Надо в условие добавить отрицание:
Исправлено 1 раз(а). Последнее : Simple777, 16.10.21 16:06 |
Re: Шаблон для ввода некоторого набора символов | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Тогда это уточнение для тебя - мой пример полностью основан на твоем
|
Re: Шаблон для ввода некоторого набора символов | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Это да.
Когда приводил пример, не поставил знак ! А в проге поставил, конечно. Исправлено 1 раз(а). Последнее : Simple777, 16.10.21 16:51 |
Re: Шаблон для ввода некоторого набора символов | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Реально ещё убираю предварительно все пробелы из myvar. Хвостовые пробелы допускаются, но они потом дополняются по PADR().
Исправлено 3 раз(а). Последнее : Simple777, 16.10.21 17:11 |
© 2000-2024 Fox Club  |