Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Без дельфи не читает баз


Автор: Dreyka 16.7.2004, 11:12
Привет всем! Написал базы данных и СУБД к ним, отнёс парню, а у него Дельфи нет.
При запуске выдаёт ошибку и закрывает приложение. В ошибке присутствуют слова
Borland Delphi.

Автор: ~FoX~ 16.7.2004, 11:22
Скорее всего придется ставить BDE Administrator и прописывать Aleas в нем.
А вообще ИМХО проще инсталлер сделать!

Автор: Dreyka 16.7.2004, 12:35
Объясни толком, пожалуйста...

Автор: 78125 16.7.2004, 14:59
хм, можно алиас динамически создать, на стадии выполнения программы, там же и подключиться к БД.

Код

with session do
begin
configmode:=cmSession;
try
addstandartalias('xxx',extractfilepath(Paramstr(0))+'DATA\','PARADOX');
form1.table1.active:=true;
finally
configmode:=cmAll;
end;
end;


Есля я конечно чего не напутал smile.gif tounge.gif

Автор: Pakshin A. S. 16.7.2004, 15:05
Без BDE не покатит! Лучше всё в InstallShell'де делать: и BDE инсталлировать, и алиасы создавать.

Автор: ~FoX~ 16.7.2004, 15:13
78125
Интересно в чем ты его создашь? Если БДЕ Админ отсутствует?

Автор: 78125 16.7.2004, 15:26
2 fox ???

Автор: Illusion Dolphin 16.7.2004, 16:56
Вот как я делаю в своей программе.
а) определяем, есть ли BDE, и если нет, то ставим его
Код


type
 tDllRegisterServer = function : HResult; stdcall;

var h : integer;
 regserv: tDllRegisterServer;

function BDEInstalled: Boolean;
begin
Result := (dbiInit(nil) = 0)
end;

......

 if not BDEInstalled then
 begin
  if fileexists(ProgramDir+'\BdeInst.dll') then
  begin
   MessageDlg('ОШИБКА: Borland Database Engine (IDAPI) не найдена' + #13+
   'Будет выполнена её установка...',
   mtError, [mbOK], 0);
   h:=loadlibrary(Pchar(ProgramDir+'\BdeInst.dll'));
   if h=0 then halt;
   @regserv := GetProcAddress ( h, 'DllRegisterServer' );
   regserv;
   freelibrary(h);
  end;
  if not BDEInstalled then
  begin
   MessageDlg('ОШИБКА: Borland Database Engine (IDAPI) не найдена' + #13+
   'перед следующей попыткой ее необходимо установить....',
   mtError, [mbOK], 0);
   halt;
  end;
 end;

ProgramDir - папка с программой (там лежит файл BdeInst.dll, который находится в cab-архиве (bdeinst.cab) в папке, куда делфи установила BDE.
б) Сделать, как советовал Strori.
P.S. Это всё можно сделать в самом простом случае в главном файле проекта.

Автор: Gorcer 17.7.2004, 09:45
Сталкнулся с такой же проблемой, выход нашел немного ламерский:
Скопировал в папку к экзешнику следующие файлы из папок Delphi:

BANTAM.DLL
IDAPI32.CFG
IDAPI32.DLL
IDBAT32.DLL
IDPDX32.DLL
IDR20009.DLL
IDSQL32.DLL

Дельфа у меня шестая, а база была под парадокс.

Попробуй hehe.gif

Автор: Dreyka 17.7.2004, 13:41
Gorcer
А что-нибудь дополнительно ты делал?

Автор: Gorcer 17.7.2004, 13:59
Нет! Просто скопировал!

Неработает чтоли?

Автор: Dreyka 17.7.2004, 19:19
Я пока не пробовал, тот парень только в понедльник будет работать, а у друзей в основном компьютеров нет.

Автор: Gorcer 18.7.2004, 13:57
А ты попробуй у себя попереименовывать папку в которых библиотеки дельфи лежат

\Program files\Common Files\Borland Shared Files

на

\Program files\Common Files\Borland Shared Files2

И посмотри будет прога работать или нет notify.gif


Автор: Dreyka 18.7.2004, 20:00
Нет так просто не работает... sad.gif

Автор: Illusion Dolphin 18.7.2004, 20:32
Dreyka: а то, что я посоветовал разве не работает? Или есть какие-нибудь проблемы? Или я не понимаю чего-то?

Автор: Dreyka 19.7.2004, 21:31
Спасибо всем ребята, особенно Illusion Dolphin, именно твоим способом я и воспользовался. Разобрался вроде бы во всём, объясни только, пожалуйста, что значит:

@regserv := GetProcAddress ( h, 'DllRegisterServer' );
regserv;

Автор: _hunter 20.7.2004, 16:38
в regserv пишется адрес функции DllRegisterServer ( которую экспортирует библиотека ) и теперь DllRegisterServer можно вызывать по имени regserv

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)