Exception edbengineerror in module

Этап 1-й
Инсталлятор программы сделан с использованием InstallShield.
Инсталляция BDE полная.
После инсталляции BDE Administrator запускается нормально.
Этап 2-ой.
Запускаю программу ошибка: An error occured while attempting to initialize the BDE ( error $ 2A06).
После этого попытка запуска BDE Administrator заканчивается возникновением ошибки. Ошибка : Exception EDBEngineError in module BDEAdmin.exe at 00054F92. An error occured while attempting to initialize the BDE ( error $ 3E06).
Внимание ! Программа после всего этого запускается и работает. Выполняет все необходимые функции по работе с БД.
Подскажите в чем может быть дело. Может кто-нибудь имел дело с чем — то подобным.


Pat ( 2003-01-17 14:23 ) [1]

Попробуй не ставить BDE, а кидать нужные dll"ки в папку с EXE"шником..может что-нить где-нить не прописывается.


gsu ( 2003-01-17 17:34 ) [2]

1. ошибка в программе
2. глюки bde


VAleksey ( 2003-01-18 13:17 ) [3]

Up !
Спасибо всем кто откликнулся. Еще идеи ?
Вот вам еще для размышления. По моим наблюдениям такая ошибка происходит только на медленных (старых) компьютерах.


Наталия ( 2003-01-20 06:06 ) [4]

VAleksey © (17.01.03 13:06)
Было у меня один раз такое. Несколько в иной интерпретации. После установки БДЕ программа около двух лет работала без проблем. Однажды, после запуска антивируса, при попытке запуска программы появилась такая ошибка, как ты описал. Переустановила БДЕ, всё заработало. С чем это связано, пока не понятно.

Pat © (17.01.03 14:23)
Твой совет ни в какие ворота не лезет.

Особенности

При запуске программы выдаются сообщения об ошибках вида

“EDBEngineError … Ошибка инициализации BorlandDatabaseEngine”.

Причина

Это означает, что установка программы прошла не полностью или некорректно.

Решение

Для решения возникшей проблемы рекомендуем следующий порядок действий:

Обработка исключений EDBEngineError

  • размер шрифта уменьшить размер шрифта увеличить размер шрифта
  • Печать

Обработка исключений EDBEngineError

Информация, описывающая условия возникновения ошибки BDE, может быть получена приложением с помощью исключения EDBEngineError. Перехват и обработка в приложениях исключений EDBEngineError осуществляется с помощью конструкции try..except. При наступлении исключения EDBEngineError должен быть создан объект EDBEngineError, различные поля в котором могут быть использованы программистом для определения источника ошибки и принятия решения по исправлению ситуации. Для данного типа исключения может генерироваться более чем одно сообщение об ошибке. Для получения нужной информации необходимо "проиграть" все сообщения.

Вот поля, наиболее соответствующие нашему контексту:

  • ErrorCount: тип Integer; указывает количество ошибок в свойстве Errors; отсчет начинается с нуля.
  • Errors: тип TDBError; набор записей типа структуры, содержащей информацию о каждой специфической сгенерированной ошибке; каждая запись доступна через номер индекса, имеющего тип Integer.
  • Errors.ErrorCode: тип DBIResult; указывает код ошибки BDE для ошибки в текущей записи Errors.
  • Errors.Category: тип Byte; категория ошибки, ссылается на поле ErrorCode.
  • Errors.SubCode: тип Byte; субкод значения ErrorCode.
  • Errors.NativeError: тип LongInt; код удаленной ошибки, возвращаемой сервером; если ноль, то ошибка не является ошибкой сервера; в этом поле возвращается код запроса SQL.
  • Errors.Message: тип TMessageStr; если ошибка является ошибкой сервера, то сообщение сервера содержится в текущей записи Errors; если это не ошибка сервера, то это сообщение об ошибке BDE.

В случае наличия конструкции try..except, объект EDBEngineError создается непосредственно в секции except. После создания объекта исключения все его области становятся доступными, ссылка на объект может передаваться в другую процедуру для детального исследования ошибок. Метод передачи объекта EDBEngineError в специализированную процедуру для приложения предпочтительнее, поскольку делает код приложения более модульным и уменьшает общий объем кода, необходимого для синтаксического анализа объекта и получения информации о возникшей ошибке. В качестве альтернативы можно предложить идею создания специализированного компонента, предусматривающего описанную функциональность; такое решение позволяет распространять созданный в основе компонента код среди нескольких приложений. Приведенный ниже пример демонстрирует создание объекта DBEngineError, передачу его процедуре и синтаксический разбор объекта для получения информации об ошибке.

В конструкции try..except для создания экземпляра DBEngineError необходим синтаксис, показанный ниже:

В данной процедуре сделана попытка изменить значение поля таблицы и вызвать метод Post соответствующего компонента TTable. Ошибка при попытке отправить измененные данные перехватывается в секции try..except. В случае возникновения EDBEngineError, выполнение передается в секцию except, где происходит создание объекта EDBEngineError (E) и передача его процедуре ShowError. Обратите внимание на то, что в этой секции во внимание берутся только исключения EDBEngineError. В реальной программе код должен содержать проверку на другие типы исключений.

Процедура ShowError в качестве параметра получает ссылку на объект EDBEngineError и "опрашивает" его на предмет наличия информации об ошибках. В приведенном ниже примере информация об ошибках отображается в компоненте TMemo. В реальной жизни отображение ошибок может и не понадобится, но информация о них является логикой работы приложения, расширяющая его функциональность так, чтобы оно могло правильно реагировать на них. Первым шагом необходимо вычислить количество реально произошедших ошибок. Эта величина хранится в свойстве ErrorCount. Данное свойство имеет тип Integer и может использоваться для создания цикла, в теле которого можно по очереди получить информацию о каждой ошибке, содержащейся в объекте. В теле цикла поочередно ErrorCount-раз перебираются все содержащиеся в объекте ошибки (как вы помните, каждая ошибка представляет собой запись-элемент свойства Errors), "достается" о них вся информация и помещается в компонент TMemo.


[an error occurred while processing the directive]
Карта сайта