Убить призрака БДЭ - PullRequest
0 голосов
/ 09 мая 2009

В моем приложении Delphi7 я могу подключаться к базе данных, когда вы вошли в систему как администратор («Дейв»), но не когда вы вошли в систему как обычный или ограниченный пользователь («Париж»). Бывает на XP Home & Vista Business Ultimate 64. Я использую псевдоним для БД. База данных Firebird, промежуточное ПО IBO 4.7.

Я разместил это в другой ветке, но знаю, что у меня гораздо больше информации, и кажется, что проблема в BDE. Очевидно, что DB.Pas связан. Я вижу его в файле project.map, и exe читает реестр, чтобы получить псевдоним BDE.

Я удалил все исходные файлы и файлы dcu, относящиеся к BDE, я тщательно искал в проекте компонент БД, и он выглядел чистым.

Кто-нибудь там был?

Ответы [ 3 ]

4 голосов
/ 10 мая 2009

Предполагая, что вы не собираете пакеты, удалите db.pas и db.dcu с диска (например, переименуйте их в db! .Pas и db! .Dcu) и пересоберите. Компилятор должен остановиться там, где указана БД.

3 голосов
/ 10 мая 2009

Просто чтобы отметить очевидное, вы также проверили все пункты USES?

И вам не нужно беспокоиться о Db.pas, я не знаком с IBO, но подозреваю, что он также использует Db.pas (TDataSet, TDatasource).

Вам нужно будет найти блок DbTables и компоненты там. Он содержит глобально объявленную и созданную переменную Session. И TSession ссылки на BDE.

1 голос
/ 11 мая 2009

Я решил это с вашей помощью. Сначала Габр рекомендовал удалить .dcus. Я имел, но нашел несколько, в том числе db.dcu. Уничтожил это. Теперь компиляция остановлена ​​на IB.dcu (интерфейс Borlands для Interbase). Убил его и получил компиляцию. Grepped для БД в .map - нет. Все равно не будет работать как Париж, поэтому я нашел комментарий Джейсона в источниках, который показал, что свойство AliasName TConnection было для псевдонима BDE, а не для псевдонима FireBird, поэтому я установил свойство пустым.

Запустил exe под Парижем, и это сработало!.

Теперь я должен сказать вам, что взял этот дом на выходные, надеясь на какое-то внимание. Когда это сработало, я закричал BLOODY BONZER! во весь голос - и все три кошки нырнули и спрятались.

«IB» - 3 знака в 700 тысячах строк кода!

Так что, если кого-то преследует этот призрак, grep для IB!

Спасибо, ребята (девочки?) - как я могу вам объяснить лучший ответ?

Спасибо, Дейв.

...