Телефон: +7 (926) 245-03-63

Как получить информацию о псевдониме BDE?

Следующая статья: Работа с BDE в сети.

Примечание: Для работы данного примера бросьте на форму компоненты Label, Button. В обработчике события OnClick кнопки наберите код. Вместо MyAlias напишите любой реальный псевдоним (alias).

Решение 1

// Получаем из BDE путь MyAlias
procedure TForm1.Button1Click(Sender: TObject); 
const AliasName ='MyAlias';
var MyAliasPath: string;
ParamsList: TStringList;
begin 
  ParamsList:=TStringList.Create; 
  try with Session do 
  begin 
    Session.GetAliasNames(ParamsList); 
    Session.GetAliasParams(AliasName,ParamsList); 
    MyAliasPath:=Copy(ParamsList[0], 6, 50)+'\'; end; 
  finally
    ParamsList.Free; 
  end; 
  Label1.Caption:=MyAliasPath; 
end;

Решение 2

uses DbiProcs, DBiTypes; { Возвращает каталог базы данных для псевдонима (без обратного слеша) } 
function GetDataBaseDir(const Alias: string): String; 
var 
sp: PChar; 
Res: pDBDesc; 
begin 
 try 
  New(Res); 
  sp:=StrAlloc(sdf_str_length(Alias)+1); 
  StrPCopy(sp, Alias); 
  if DbiGetDatabaseDesc(sp, Res)=0 then 
   Result:=StrPas(Res^.szPhyName) 
  else 
   Result:='';
 finally
  StrDispose(sp);
  Dispose(Res);
 end;
end;

Примечание: Для работоспособности этого кода надо иметь активную таблицу в приложении с тем же псевдонимом, что и Alias. Этот код несколько избыточен, поэтому предлагается вариант из Help:

uses DBiTypes;
function GetDataBaseDir(const Alias: string): String;
var R: DBDesc;
begin
 Check(DbiGetDatabaseDesc(PChar(Alias), @R)); 
 Result:=R.szPhyName;
end; 
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption:=GetDataBaseDir('Alias');
end;