Воспользуемся компонентом TSession:
function GetDBPath(const Alias: string): string;
var AllSt: TStringList;
i: integer;
S: string;
begin
Result:='';
if Length(Alias)<>0 then begin
AllSt := TStringList.Create;
try
DM1.Session1.GetAliasParams(Alias,AllSt);
S:='';
for i:=0 to AllSt.Count-1 do begin
if Copy(AllSt[i],1,11)='SERVER NAME' then begin
S:=ExtractFilePath(Copy(AllSt[i],13,80));
Break;
end else if Copy(AllSt[i],1,4)='PATH' then begin
S:=Copy(AllSt[i],6,80);
Break;
end;
end;
if Length(S)<>0 then Result:=S
finally
AllSt.Free;
end;
end;
end;
Модификация
этого примера от Середа Александра (alex@uice.com.ua)
1. Если делать
универсальную функцию, то Session лучше передавать как параметр.
2. Если
уж создаем StringList, то давайте использовать его возможности.
function GetDBPath(ASession: TSession; const Alias: string): string;
var
AllSt: TStringList;
begin
Result:='';
if Length(Alias)<>0 then begin
AllSt := TStringList.Create;
try
ASession.GetAliasParams(Alias,AllSt);
if (AllSt.IndexOfName('SERVER NAME') > -1) then
Result := AllSt.Values['SERVER NAME']
else if (AllSt.IndexOfName('PATH') > -1) then
Result := AllSt.Values['PATH'];
finally
AllSt.Free;
end;
end;
end;
Вариант от Vitaly Grobshtein (tusm5@vorkuta.com)
Давно
пользуюсь другим приемом. Работает надежно.
//********************************************************************
// Возвращает путь к базе по имени алиаса (вместе с конечным "\")
function GetPhNameByAlias(sAlias: string ): String;
var
Database: TDatabase;
pszDir: PChar;
begin
Database := TDatabase.Create( nil ); {allocate memory}
pszDir := StrAlloc( 255 );
try
Database.AliasName := sAlias;
Database.DatabaseName := 'TEMP'; {requires a name -- is ignored}
Database.Connected := True; {connect without opening any table}
DbiGetDirectory( Database.Handle, True, pszDir ); {get the dir.}
Database.Connected := False; {disconnect}
Result := OemToAnsiStr(StrPas( pszDir )); {convert to a string}
finally
Database.Free; {free memory}
StrDispose( pszDir );
end;
end;
|
Copyright ©
"Мастера DELPHI" E-mail:
delphi@mastak.com
http://www.delphimaster.ru |
Источник получения информации: http://www.delphimaster.ru
|