Вниз
Скачать: CL | DM;

Код ошибки   Найти похожие ветки 

 
Sectey ©   (2003-03-13 15:15) [0]

У меня есть текст ошибки "Table cannot be opened for exclusive use." как мне узнать его код. Заранее блогодарен за помощь.


 
Dred2k ©   (2003-03-13 15:24) [1]

Код равен $280D. Это исключение типа EDBEngineError (ошибка BDE). Глянь на него хелп и увидишь, что проперть Errors, потом его ErrorCode сделает тебя счастливым.


 
Sectey ©   (2003-03-13 15:31) [2]

>Dred2k
А где ты взял код данного исключения.
Где посмотрел?


 
Dred2k ©   (2003-03-13 15:50) [3]

> А где ты взял код данного исключения.
Я ж говорю - код ты получишь через объект исключения.
Вызов 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 невозможно (его же нет!). Вот я и сделал как-то модуль, содержащий массив всех сообщений по кодам (даже прогу написал, что б модуль этот сгенерить ;) ).
Попутно все стало ясно.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
3-100142
Fbist
2003-03-11 13:48
2003.03.31
ADO в DLL :(


1-100266
jen_bond
2003-03-19 09:50
2003.03.31
Работа с файлом формата .emf


14-100418
Карелин Артем
2003-03-12 09:39
2003.03.31
Маленький прокси.


1-100262
OlegM
2003-03-19 07:42
2003.03.31
hex в int и обратно


4-100513
Rouse_
2003-02-02 16:56
2003.03.31
Закрытие приложения




   Наверх