Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Версия BDE

Delphi , Базы данных , BDE

Версия BDE


uses BDE; 

{Without the Registry:} 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  ThisVersion: SYSVersion; 
begin 
  DbiGetSysVersion(ThisVersion); 
  ShowMessage('BORLAND DATABASE ENGINE VERSION = ' + IntToStr(ThisVersion.iVersion)); 
end; 

{With the Registry:} 

function GetBDEVersion: string; 
var 
  h: hwnd; 
  ptr: Pointer; 
  proc: TSYSVerProc; 
  ver: SYSVersion; 
  idapi: string; 
  reg: TRegistry; 
begin 
  try 
    reg.RootKey := HKEY_CLASSES_ROOT; 
    reg.OpenKey('CLSID\{FB99D710-18B9-11D0-A4CF-00A024C91936}\InProcServer32', False); 
    idapi := reg.ReadString(''); 
    reg.CloseKey; 
  finally 
    reg.Free; 
  end; 
  Result := '<BDE Bulunamadi>'; 
  h      := LoadLibrary(PChar(idapi)); 
  if h <> 0 then  
    try 
      ptr := GetProcAddress(h, 'DbiGetSysVersion'); 
      if ptr <> nil then  
      begin 
        proc := ptr; 
        Proc(Ver); 
        Result := IntToStr(ver.iVersion); 
        Insert('.', Result, 2); 
      end; 
    finally 
      FreeLibrary(h); 
    end; 
end;

Программа на Delphi, которая получает версию Borland Database Engine (BDE), установленную на системе. Есть две версии: одна без использования реестра и другая с использованием реестра.

Версия без Реестра

Первый процедура Button1Click получает версию BDE, используя функцию DbiGetSysVersion из библиотеки BDE. Затем она отображает сообщение об ошибке, содержащее номер версии.

Работает следующим образом:

procedure TForm1.Button1Click(Sender: TObject);
var
  ThisVersion: SYSVersion;
begin
  DbiGetSysVersion(ThisVersion);
  ShowMessage('BORLAND DATABASE ENGINE VERSION = ' + IntToStr(ThisVersion.iVersion));
end;

Версия с Реестром

Вторая функция GetBDEVersion получает версию BDE, прочитав значение реестра. Она сначала открывает ключ реестра для CLSID (классификатора) BDE, читает путь к DLL-библиотеке в-PROCESS из этого ключа, загружает DLL с помощью LoadLibrary и получает адрес функции DbiGetSysVersion из DLL с помощью GetProcAddress. Затем она вызывает DbiGetSysVersion с полученным номером версии.

Работает следующим образом:

function GetBDEVersion: string;
var
  h: hwnd;
  ptr: Pointer;
  proc: TSYSVerProc;
  ver: SYSVersion;
  idapi: string;
  reg: TRegistry;
begin
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    reg.OpenKey('CLSID\{FB99D710-18B9-11D0-A4CF-00A024C91936}\InProcServer32', False);
    idapi := reg.ReadString('');
    reg.CloseKey;
  finally
    reg.Free;
  end;
  Result := '<BDE Bulunamadi>';
  h := LoadLibrary(PChar(idapi));
  if h <> 0 then
    try
      ptr := GetProcAddress(h, 'DbiGetSysVersion');
      if ptr <> nil then
      begin
        proc := ptr;
        Proc(Ver);
        Result := IntToStr(ver.iVersion);
        Insert('.', Result, 2);
      end;
    finally
      FreeLibrary(h);
    end;
end;

Обратите внимание, что в второй версии функция возвращает '' если не может найти ключ реестра BDE или загрузить DLL. Это потому, что функция DbiGetSysVersion может не быть доступна на всех системах, где установлен BDE.

В статье рассматриваются две версии приложения BDE (Borland Database Engine) - без использования реестра и с использованием реестра, демонстрируя примеры кода на языке Delphi для получения информации о версии BDE.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: BDE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:42:48/0.0033488273620605/0