Дополнительная информация о шаблонах с примерами их использования |
При задании шаблонов ввода символы открывающейся "{" и закрывающейся "}" фигурных скобок могут быть использованы для объединения команд форматирования ввода в одну группу. Группа команд форматирования может выступать как один элемент при использовании внутри нее альтернатив разбора. Например, шаблон
{[0:9]|%>[A:Fa:f]}
может быть использован для ввода одной шестнадцатеричной цифры. Строка форматирования вида
{%>[0:9A:Fa:f]}
лучше подходит для данной цели, но предыдущая строка форматирования показывает пример использования альтернатив внутри группы.
Группа команд форматирования может использоваться для назначения атрибута форматирования всей группе целиком. В качестве примера можно рассмотреть использование атрибута диапазона числового значения при задании шаблона форматирования. Например, следующий шаблон
{%[1:55]{09}}
можно использовать для ввода числа, состоящего из одной или двух цифр и находящегося в диапазоне от 1 до 55. В этом случае первая открывающаяся фигурная скобка определяет группу для всей последовательности символов форматирования, затем комбинация %[<число 1>:<число 2>] задает диапазон числовых значений для числа, представление которого описывается в следующей за этим атрибутом группе в фигурных скобках.
Символы квадратных скобок используются при форматировании для задания диапазона допустимых значений очередного вводимого символа. Символы могут быть перечислены один за другим, или заданы в виде первого и последнего символа диапазона, разделенные символом двоеточия ":". Если после открывающейся квадратной скобки при задании диапазона допустимых символов использовать символ "^", то в качестве результирующего множества допустимых символов будут фигурировать все символы, за исключением перечисленных в квадратных скобках. Так, запись [^] обозначает любой произвольный символ. Для задания отдельного символа может быть использован символ обратной косой черты (\) для блокирования распознавания служебного символа, например строка [1\:] задает множество из двух символов: "1" и ":". При определении символов множества можно задавать символы по их шестнадцатеричному коду, используя символ диез (#) и две следующих за ним шестнадцатеричных цифры кода символа. Так, запись множества [#5D] соответствует последовательности [\]] и задает множество из одного символа закрывающейся квадратной скобки.
Так как определение строки формата ввода задается через вычисляемый псевдоатрибут поля inputMask, на максимальную длину строки форматирования накладывается ограничение в 255 символов.
Это ограничение можно обойти, если регистрировать собственные глобальные шаблоны форматирования при помощи функции DefineFormat и в дальнейшем обращаться к ней при помощи последовательности @<имя шаблона> из других шаблонов. При этом, однако, стоит различать встраиваемые и вызываемые шаблоны форматирования. После вызова функции DefineFormat создается вызываемый шаблон ввода, который затем может быть преобразован к встраиваемому вызовом функции InlineFormat.
Различие между вызываемыми и встраиваемыми шаблонами форматирования заключается в том, что для вызываемых шаблонов при их вычислении формируется неявная группа символов и после обработки вызванного формата восстанавливается состояние атрибутов шаблона на момент вызова функции. После вызова встраиваемого шаблона состояние атрибутов шаблона останется таким, которое будет сформировано к завершению вызванного шаблона.
В качестве примера использования описаний функций можно привести таблицу определения встроенных функций, которые используются в качестве некоторых символов и параметров форматирования (все функции в этой таблице определены как встраиваемые).
Функция |
Определение функции |
9 |
[0:9] |
0 |
%`9 |
+ |
[-+] |
# |
%`+ |
? |
[^] |
* |
%`? |
S |
[A:Za:z] |
Б |
[А:Яа:яЁё] |
s |
[A:Za:z0:9] |
б |
[А:Яа:яЁё0:9] |
A |
[A:Za:zА:Яа:яЁё] |
А |
A |
a |
[A:Za:zА:Яа:яЁё0:9] |
а |
a |
N |
"#" |
R |
{%>%?[MmDdCcLlXxVvIi]} |
r |
{%<%?[MmDdCcLlXxVvIi]} |
%> |
%@U1%@L0 |
%< |
%@U0%@L1 |
%= |
%@U0%@L0 |
%* |
%{:} |
%? |
%{1:} |
%` |
%{0:1} |
%% |
"%" |
%C |
%@F0 |
%X |
%@F1 |
%U |
%@P1 |
%Z |
%@V1 |
Как можно видеть из приведенного примера, шаблон вида %{<минимум>:<максимум>} позволяет задавать количество повторений следующего за ним символа или группы символов.