Delphi ищет файл базы данных в папке system32

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Moon
Сообщения: 3
Зарегистрирован: 10 июн 2010, 01:15

Delphi ищет файл базы данных в папке system32

Сообщение Moon » 10 июн 2010, 01:21

Утановлена Delphi 2009, на компьютер под управлением Windows 7.
В дизайн тайме вываливает вот такое сообщение:
Изображение
В рантайме все нормально.
Суть проблемы заключается в том, что делфи начинает искать файл базы данных в папке system32, хотя если в пути к базе прописать только имя файла, должно искаться в папке с программой,
собсно на всех предыдущих версиях делфи было так. А вот тут почему то иначе все обстоит.
Такое сообщение вылетает и на айбииксах и фибах.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Delphi ищет файл базы данных в папке system32

Сообщение kdv » 10 июн 2010, 02:41

хотя если в пути к базе прописать только имя файла, должно искаться в папке с программой,
с чего это Вы взяли? Вовсе не должно.
собсно на всех предыдущих версиях делфи было так.
чудовищное заблуждение.
а) никакие "версии Дельфи", или IBX/FIBPlus не имеют отношения к тому, как СУБД ищет файл БД. Это клиент-сервер, а не файл-сервер. Т.е. файл открывает сервер, и только сервер. Дельфи и прочее - это клиент. Который указывает серверу, какой файл открыть. Не указали путь - получите черт знает что, в зависимости от того, где установлен СЕРВЕР.
б) никогда, ни в InterBase, ни в Firebird, нельзя было указывать имя БД без пути.

Moon
Сообщения: 3
Зарегистрирован: 10 июн 2010, 01:15

Re: Delphi ищет файл базы данных в папке system32

Сообщение Moon » 10 июн 2010, 07:44

kdv писал(а):
хотя если в пути к базе прописать только имя файла, должно искаться в папке с программой,
с чего это Вы взяли? Вовсе не должно.
собсно на всех предыдущих версиях делфи было так.
чудовищное заблуждение.
а) никакие "версии Дельфи", или IBX/FIBPlus не имеют отношения к тому, как СУБД ищет файл БД. Это клиент-сервер, а не файл-сервер. Т.е. файл открывает сервер, и только сервер. Дельфи и прочее - это клиент. Который указывает серверу, какой файл открыть. Не указали путь - получите черт знает что, в зависимости от того, где установлен СЕРВЕР.
б) никогда, ни в InterBase, ни в Firebird, нельзя было указывать имя БД без пути.
Ну, как с чего взял, потому что всегда работало, даже сейчас после перезапуска компьютера первое соединение происходит так как надо, а потом, при реконекте, происходит ошибка.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Delphi ищет файл базы данных в папке system32

Сообщение kdv » 12 июн 2010, 13:02

Ну, как с чего взял, потому что всегда работало
работало потому, что каталог по умолчанию после логина один, а стоит открыть какой-нибудь файл в другом каталоге, и каталог по умолчанию меняется.

Короче, не разбираетесь - читайте ответы или ищите в гугле. Для IB и FB НИКОГДА не допускалось не указывать путь к базе. Потому что путь по умолчанию зависит от ОС и от действий, которые выполняются в ОС под конкретным аккаунтом.

Moon
Сообщения: 3
Зарегистрирован: 10 июн 2010, 01:15

Re: Delphi ищет файл базы данных в папке system32

Сообщение Moon » 13 июн 2010, 18:25

да уяснил уже, забыл просто отписать, что в принципе глупая затея - не прописывать путь, тем более, что в реальных проектах база всегда отдельно от программы лежит.
А за пояснение почему все таки работало,отдельное спасибо. Действительно если проект открыть из папки работает и без прописывания пути. Но, как я уже сказал, делать так не стоит :)

Antoxa
Сообщения: 169
Зарегистрирован: 06 июл 2006, 10:53

Re: Delphi ищет файл базы данных в папке system32

Сообщение Antoxa » 14 июн 2010, 04:51

ChDir(ExtractFileDir(Application.ExeName)); - как-то так...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Delphi ищет файл базы данных в папке system32

Сообщение kdv » 14 июн 2010, 11:26

тем более, что в реальных проектах база всегда отдельно от программы лежит.
в реальных проектах база обычно лежит на отдельном компе, да еще и с неизвестно какой операционкой :)

Ответить