Как получить параметры Alias?

Previous  Top  Next

    
 

 

 

The following function uses the GetAliasParams method of TSession to get the directory mapping for an alias:

Code:

uses DbiProcs, DBiTypes;

 

function GetDataBaseDir(const Alias: string): string;

{* Will return the directory of the database given the alias

(without trailing backslash) *}

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;

 

©Drkb::02520

Взято с Delphi Knowledge Base: http://www.baltsoft.com/


Code:

{

Here's a demo to demonstrate how to get info about aliases in Delphi.

First, create a new project with a listbox and 3 labels (called ListBox1,

Label1, Label2, and Label3).  Then add an OnCreate event handler for the form

with this code in it:

}

 

 

procedure TForm1.FormCreate(Sender: TObject);

begin

{

   GetAliasNames Populates a string list with the names of persistent

   Borland Database Engine (BDE) aliases.

}

Session.GetAliasNames(ListBox1.Items);

end;

 

{ Now add an OnClick event for the Listbox: }

 

procedure TForm1.ListBox1Click(Sender: TObject);

var

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

Desc: DBDesc;

{

The DBDesc structure describes a database, using the following fields:

 

szName    DBINAME  Specifies the database alias name.

szText    DBINAME  Descriptive text.

szPhyName  DBIPATH  Specifies the physical name/path.

szDbType   DBINAME  Specifies the database type.

}

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);

   Label4.Caption := StrPas(Desc.szText);

end;

end;

 

// Now add the following to the 'uses' clause at the top of the unit:

 

uses

{...,}DB, DBTables, DBITypes, DBIProcs;

 

 

{********************************************************************}

 

{

This Examples is just another approach to get infos about aliases

Using 2 component (TListBox) and only use 1 uses clause (dbTables)

}

 

uses

{...}, DBTables;

 

type

TForm1 = class(TForm)

   ListBox1: TListBox;

   ListBox2: TListBox;

 

{..}

 

implementation

 

{..}

 

procedure TForm1.FormCreate(Sender: TObject);

begin

{Get Alias Names}

Session.GetAliasNames(ListBox1.Items);

end;

 

procedure TForm1.ListBox1Click(Sender: TObject);

begin

ListBox2.Items.Clear;

if ListBox1.Items.Count = 0 then

   Exit;

{Get Alias Driver Names, like Standard, MsAccess, etc}

ListBox2.Items.Add('DRIVER=' + Session.GetAliasDriverName(ListBox1.Items.Strings

     [ListBox1.ItemIndex]));

{Get Alias Parameters and add it parameters into listbox2}

Session.GetAliasParams(ListBox1.Items.Strings[ListBox1.ItemIndex], ListBox2.Items);

end;

 

end.

 

 

©Drkb::02521

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php