function GetDBPath1(AliasName: string): TFileName;
var
ParamList: TStringList;
begin
ParamList := TStringList.Create;
with Session do
try
GetAliasParams(AliasName, ParamList);
Result := UpperCase(ParamList.Values['PATH']) + '\';
finally
Paramlist.Free;
end;
end;
function GetDBPath2(AliasName: string): TFileName;
var
ParamList: TStringList;
i: integer;
begin
ParamList := TStringList.Create;
with Session do
try
try
GetAliasParams(AliasName, ParamList);
except
for i:=0 to pred(DatabaseCount) do
if (Databases[i].DatabaseName = AliasName) then
ParamList.Assign(Databases[i].Params);
end;
Result := UpperCase(ParamList.Values['PATH']) + '\';
finally
Paramlist.Free;
end;
end;
function GetDBPath3(ATable: TTable): TFileName;
var
TblProps: CURProps;
pTblName, pFullName: DBITblName;
begin
with ATable do begin
AnsiToNative(Locale, TableName, pTblName, 255);
Check(DBIGetCursorProps(Handle, TblProps));
Check(DBIFormFullName(DBHandle, pTblName, TblProps.szTableType, pFullName));
Result := ExtractFilePath(StrPas(pFullName));
end;
end;
Примечание
Database можно создать явно, если нет, Delphi сама его создаст. Доступ к ней осуществляется по Table(Query).Database.
uses
DbiProcs;
function GetDirByDatabase(Database: TDataBase): string;
var
pszDir: PChar;
begin
pszDir := StrAlloc(255);
try
DbiGetDirectory(Database.Handle, True, pszDir);
Result := StrPas(pszDir);
finally
StrDispose(pszDir);
end;
end;
По псевдониму:
function GetPhNameByAlias(sAlias: string): string;
var
Database: TDataBase;
pszDir: PChar;
begin
Database := TDataBase.Create(nil);
pszDir := StrAlloc(255);
try
Database.AliasName := sAlias;
Database.DatabaseName := 'TEMP';
Database.Connected := True;
DbiGetDirectory(Database.Handle, True, pszDir);
Database.Connected := False;
Result := StrPas(pszDir);
finally
Database.Free;
StrDispose(pszDir);
end;
end;
[Nomadic]