Получение пути псевдонима и таблицы

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Reinhard Kalinke

Есть три способа сделать это… No1 годится только для постоянных псевдонимов BDE. No2 работает с BDE и локальными псевдонимами, и No3 работает с BDE и локальными псевдонимами, используя «тяжелый» путь, через вызовы DBI.

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;

{/codecitation}

Добавить комментарий