Дополнительная информация о шаблонах с примерами их использования Назад В начало Вперед

При задании шаблонов ввода символы открывающейся "{" и закрывающейся "}" фигурных скобок могут быть использованы для объединения команд форматирования ввода в одну группу. Группа команд форматирования может выступать как один элемент при использовании внутри нее альтернатив разбора. Например, шаблон

{[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

Как можно видеть из приведенного примера, шаблон вида %{<минимум>:<максимум>} позволяет задавать количество повторений следующего за ним символа или группы символов.