Install BDE программы
01.01.2007
Периодически муссируются вопросы типа 'Как установить BDE?' и т.п.
Предлагаю, как пример возможного решения проблемы, след. программу .
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]. Замечания, предложения по улучшению приветствуются. Счастливо, Константин Кочедыков / kostya@roadtech.saratov.su / } {$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('SHAREDMWriteString(' 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.
Константин Кочедыков / kostya@roadtech.saratov.su /
Взято с сайта https://blackman.wp-club.net/