928_____________________________________________Глава 15

Конструктор                           Описание

Exception(int Ident, int AHelpContext)      Конструктор задает строку свой

I                                         ства Message идентификатором
Ident строки сообщения в ресур-

|                                         сах проекта; передает свойству   |
HelpContext идентификатор
AHelpContext экрана контекст-
но-зависимой справки по этому
исключению.

; Exception(int Ident,                       Конструктор формирует строку  |
const System::TVarRec * Args,   свойства Message исходя из стро-
const int Args_Size,             ки описания формата в ресурсах |
I          int AHelpContext)              проекта, указываемой идентифи- |

катором Ident, и массива аргу-
'                                           ментов Args; передает свойству

HelpContext идентификатор
I                                         AHelpContext экрана контекст- \

но-зависимой справки по этому
':                                       исключению.

Рассмотрим примеры использования различных конструкторов:

throw Exception("He хватает исходных данных");

throw Exception(Format("Задано %d параметров из %d",
OPENARRAY(TVarRec,(Nl, N2)))) ;

Последний пример использует функцию Format (см. раздел 14.7.2 главы 14)
для форматированного вывода информации о значениях переменных Nl и N2. При
этом для передачи в конструктор массива используется макрос OPENARRAY (о пе-
редаче в функции открытых массивов см. в главе 12 в разделе 12.10.3). В результа-
те, например, при значениях переменных Nl = 5 и N2 = 7 будет сгенерировано иск-
лючение, в диалоговом окне которого появится текст: «Задано 5 параметров из 7».

Следующий пример:

throw Exception("Задано %d параметров из %d",
OPENARRAY(TVarReс,(Nl, N2)));

Этот пример аналогичен предыдущему, но использует конструктор с непосред-
ственным заданием строки форматирования в качестве первого параметра. Поэто-
му запись получается несколько короче, чем в предыдущем примере.

Следующий пример генерирует исключение с указанием темы контекстно за-
висимой справки:

throw Exception("He хватает исходных данных",4);

Этот оператор сгенерирует исключение с тем же текстом, что и в одном из при-
веденных выше примеров, но если в диалоговом окне с сообщением об этом исклю-
чении пользователь нажмет клавишу F1, ему будет предъявлена контекстная
справка с идентификатором 4.

Пример применения конструктора, использующего строку ресурсов:

throw Exception(65369) ;

Этот оператор передает в свойство Message строку с номером 65369 из файла
ресурсов. Оператор

raise EMy.CreateResFmt(65369, OPENARRAY(TVarRec,(Nl, N2)));