![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Код ошибки
Sectey © (2003-03-13 15:15:00)У меня есть текст ошибки "Table cannot be opened for exclusive use." как мне узнать его код. Заранее блогодарен за помощь.
Dred2k (2003-03-13 15:50:00) [1]> А где ты взял код данного исключения.
Я ж говорю - код ты получишь через объект исключения.
Вызов Open надо взять в конструкцию вида:
try
// ...
Table.Exclusive := True;
Table.Open;
// ...
except
on E : Exception do begin
if(E is EDBEngineError) then begin
// тут
end;
end;
end;
Вот как раз в точке "тут" ты можешь получить доступ к свойствам объекта исключения. Приведи его к типу через "E as TDBEngineError" и спокойно работай. Хелп смотрел на этот тип?
ErrorCount - кол-во ошибок BDE, содержащиеся в рамках данного исключения (ошибки BDE в общем случае каскадные). Скорее всего, их количество в данном случае будет равно 1. Свойство Errors - это массив объектов TDBError. У TDBError есть свои свойства - ErrorCode, например (там еще текст, ...). Вот и вся цепочка. Внимательно изучи хелп и будешь рулить ошибками на раз.
> Где посмотрел?
Так в самой BDE. Для спеццелей пришлось однажды вытянуть ВСЕ описания ошибок, возвращаемых BDE. Дело в том, что по коду ошибки (на самом деле все вызовы BDE возвращают код, а не текст - их обработкой занимается VCL, исключение именно так и появляется) не всегда можно получить текст. Это потому, что есть группа ошибок, указывающих на недоступность самого BDE. Так вот их текст получить при этом из BDE невозможно (его же нет!). Вот я и сделал как-то модуль, содержащий массив всех сообщений по кодам (даже прогу написал, что б модуль этот сгенерить ;) ).
Попутно все стало ясно.
Sectey (2003-03-13 15:31:00) [2]>Dred2k
А где ты взял код данного исключения.
Где посмотрел?
Dred2k (2003-03-13 15:24:00) [3]Код равен $280D. Это исключение типа EDBEngineError (ошибка BDE). Глянь на него хелп и увидишь, что проперть Errors, потом его ErrorCode сделает тебя счастливым.