Большой Воронежский Форум
» Программирование>Как включить BDE в установочный диск
Sashok.vrn 14:12 16.01.2011
Разработал приложение, которое использует в работе БД.

Можно ли в установочный диск включить BDE (из C++ Builder) и прописать alias? [Ответ]
Part!zan 22:31 16.01.2011
про алиасы не знаю, а про bde гугл нашел вот http://www.delphi3000.com/articles/article_2283.asp?SK= [Ответ]
J++ 21:04 29.01.2011
Алиас кажется должен прописываться и в ODBC-конфиге, и в BDE-конфиге. Кажется, BDE не работает если в ODBC не прописать.
Файлы BDE вполне можно включить, только посмотреть еще, что в реестр прописывается и добавить куда надо.

Точнее не помню, давно дело было.

В общем не очень удобная система для автоматической "прописки" баз. Лучше наверное сделать, в дополнение к основной программе - дополнительную программку-инсталлятор, которая все пути и алиасы пропишет (и путь к БД по указанию юзверя или того, кто будет ставить БД и программу). [Ответ]
Yandex 21:52 29.01.2011
1. Включить можно, см. в конце
2. Алиасы можно создавать динамически, у BDE есть функции создания и удаления.
3. Использование BDE уже лет 5 как плохой тон.

Код:
program InstallPrfSt;
 
{
Программа иллюстрирует, как установить BDE с поддержкой PARADOX 7.0
на "чистой машине" и создать алиас.
Пример использования в качестве простейшего инсталлятора для программы
C:\MyDir\MyProg.exe
1.Создайте каталог C:\MyDir\BDE и скопируйте в него след. файлы:
CHARSET.BLL
OTHER.BLL
IDAPI32.CFG
BLW32.DLL
IDAPI32.DLL
IDBAT32.DLL
IDPDX32.DLL
IDR20009.DLL
IDSQL32.DLL
BDEADMIN.EXE - по вкусу, т.к. необходимым не является.
2.Измените значение константы AliasName на имя необходимого вам алиаса.
3.Откомпиллируйте и запустите эту программу из каталога C:\MyDir.
ВHИМАHИЕ!!! Если на машине уже установлено BDE, то перед экспериментами
сохраните (на всякий случай) след. ключи из реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine] и
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BLW32].
}
 
{$APPTYPE CONSOLE}
uses
Windows, BDE, Registry;
 
const
AliasName: string = 'PrefStat';
 
var
R: DBIResult;
Path: string;
 
procedure WriteString(S1:string);
begin
S1 := S1 + #0;
AnsiToOem(@S1[1], @S1[1]);
writeln(S1);
end;
 
function GetExePath(S1:string):string;
var
I, K :Integer;
S: string;
begin
K := 1;
S := '';
for I := Length(S1) downto 1 do
begin
   if S1[I] = '\' then
   begin
     K := I;
     Break;
   end;
end;
 
for I := 1 to K - 1 do
   S := S + S1[I];
 
Result:=S;
end;
 
procedure InstallBde;
const
Bor: string = 'SOFTWARE\Borland';
var
a: TRegistry;
BPath: string;
begin
BPath:=PATH + '\BDE';
a := TRegistry.Create;
with a do
begin
   RootKey := HKEY_LOCAL_MACHINE;
   OpenKey(Bor + '\Database Engine', True);
   WriteString('CONFIGFILE01', BPath+'\IDAPI32.CFG');
   WriteString('DLLPATH', BPath);
   WriteString('RESOURCE', '0009');
   WriteString('SaveConfig', 'WIN32');
   WriteString('UseCount', '2');
   CloseKey;
   OpenKey(Bor+'\BLW32',True);
   WriteString('BLAPIPATH', BPath);
   WriteString('LOCALE_LIB3', BPath+'\OTHER.BLL');
   WriteString('LOCALE_LIB4', BPath+'\CHARSET.BLL');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\SYSTEM\INIT',True);
   WriteString('AUTO ODBC', 'FALSE');
   WriteString('DATA REPOSITORY', '');
   WriteString('DEFAULT DRIVER', 'PARADOX');
   WriteString('LANGDRIVER', 'ancyrr');
   WriteString('LOCAL SHARE', 'FALSE');
   WriteString('LOW MEMORY USAGE LIMIT', '32');
   WriteString('MAXBUFSIZE', '2048');
   WriteString('MAXFILEHANDLES', '48');
   WriteString('MEMSIZE', '16');
   WriteString('MINBUFSIZE', '128');
   WriteString('SHAREDMEMLOCATION', '');
   WriteString('SHAREDMEMSIZE', '2048');
   WriteString('SQLQRYMODE', '');
   WriteString('SYSFLAGS', '0');
   WriteString('VERSION', '1.0');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\SYSTEM\FORMATS\DATE',True);
   WriteString('FOURDIGITYEAR', 'TRUE');
   WriteString('LEADINGZEROD', 'FALSE');
   WriteString('LEADINGZEROM', 'FALSE');
   WriteString('MODE', '1');
   WriteString('SEPARATOR', '.');
   WriteString('YEARBIASED', 'TRUE');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\SYSTEM\FORMATS\NUMBER',True);
   WriteString('DECIMALDIGITS', '2');
   WriteString('DECIMALSEPARATOR', ',');
   WriteString('LEADINGZERON', 'TRUE');
   WriteString('THOUSANDSEPARATOR', ' ');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\SYSTEM\FORMATS\TIME',True);
   WriteString('AMSTRING', 'AM');
   WriteString('MILSECONDS', 'FALSE');
   WriteString('PMSTRING', 'PM');
   WriteString('SECONDS', 'TRUE');
   WriteString('TWELVEHOUR', 'TRUE');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\REPOSITORIES',True);
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\DRIVERS\PARADOX\INIT',True);
   WriteString('LANGDRIVER', 'ancyrr');
   WriteString('TYPE', 'FILE');
   WriteString('VERSION', '1.0');
   CloseKey;
   OpenKey(Bor+'\Database Engine\Settings\DRIVERS\PARADOX\TABLE
   CREATE',True);
   WriteString('BLOCK SIZE', '4096');
   WriteString('FILL FACTOR', '95');
   WriteString('LEVEL', '7');
   WriteString('STRICTINTEGRTY', 'TRUE');
   CloseKey;
end;
a.Free;
end;
 
begin
Path:=GetExePath(ParamStr(0));
R:=dbiInit(nil);
if R<>DBIERR_NONE then
begin
   WriteString('Инициализация BDE ...');
   InstallBDE;
end;
R:=dbiInit(nil);
if R=DBIERR_NONE then
begin
   WriteString('Инициализация BDE прошла успешно');
   DbiDeleteAlias(nil, PChar(AliasName));
   R:=DbiAddAlias(nil, PChar(AliasName), szPARADOX,
   PChar('PATH:'+Path+'\DB'), True);
   if R=DBIERR_NONE then
     WriteString('Псевдоним "'+AliasName+'" создан')
   else
     WriteString('Ошибка создания псевдонима "'+AliasName+'"');
   R:=DbiCfgSave(nil, nil, Bool(-1));
   if R=DBIERR_NONE then
     WriteString('Файл конфигурации сохранён')
   else
     WriteString('Ошибка сохранения файла конфигурации');
   DbiExit;
end
else
   WriteString('Ошибка инициализации BDE');
end.
[Ответ]
Вверх