Следующая статья: Работа с 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;