Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

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;

 Reinhard Kalinke

Получение

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

Вот маленький примерчик того, как в Delphi можно получить информацию о псевдонимах. Для начала создайте новый проект с ListBox и тремя метками (с именамиListBox1, Label1, Label2 и Label3). Затем создайте обработчик события формы OnCreate с примерно следующим кодом:

procedure TForm1.FormCreate(Sender: TObject);

begin

 Session.GetAliasNames(ListBox1.Items);

end;

Теперь создайте обработчик OnClick для ListBox:

procedure TForm1.ListBox1Click(Sender: TObject);

var

 tStr: array[0..100] of char;

 Desc: DBDesc;

begin

 if ListBox1.Items.Count = 0 then exit;

 StrPLCopy(tStr, ListBox1.Items.Strings[ListBox1.ItemIndex], High(tStr));

 DbiGetDatabaseDesc(tStr, @Desc);

 with Desc do begin

Label1.Caption := StrPas(Desc.szName);

Label2.Caption := StrPas(Desc.szPhyName);

Label3.Caption := StrPas(Desc.szDbType);

 end;

end;

Добавьте следующие модули в секцию 'uses' в верхней части модуля:

DB, DBTables, DBITypes, DBIProcs;

Теперь вы можете увидеть путь для всех ваших стандартных псевдонимов (Paradox и dBase).

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

Delphi 1

Используйте Session.GetAliasParams. В ответ вы получите объект Tstrings, откуда вы можете получить значение для переменной 'PATH". Для получения дополнительной информации обратитесь к электронной справке к разделу, описывающему TSession. Объект Session объявлен в модуле DB.

uses db;

var aliaspath : string[128];

begin

 aliaspath := Session.GetAliasParams['MyAlias'].values['PATH'];

end;

uses SysUtils,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;
 

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

Nomadic советует: 

1. По таблице (фактически по Database) получить физическое местонахождение. 

Примечание: Database можно создать явно, если нет, Дельфи сама его создаст, доступ к ней по 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;

2. По алиасу.

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 := StrPas(pszDir); {convert to a string}

Поделиться с друзьями: