Информация о псевдониме BDE
Как получить информацию о псевдониме BDE?
Решение 1
procedure TForm1.Button1Click(Sender: TObject);
{ Получаем из BDE путь MyAlias }
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;
Примечание
Для работы данного примера бросьте на форму компоненты Label, Button. В обработчике события OnClick кнопки наберите код. Вместо MyAlias напишите любой реальный псевдоним (alias).
Решение 2
uses
DbiProcs, DBiTypes;
{ Возвращает каталог базы данных для псевдонима (без обратного слеша) }
function GetDataBaseDir(const Alias: string): String;
var
sp: PChar;
Res: pDBDesc;
begin
try
New(Res);
sp := StrAlloc(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;