Как получить параметры Alias?
Falk0ner, вс, 06/07/2008 - 15:34.
The following function uses the GetAliasParams method of TSession to get the directory mapping for an alias:
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;
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;
Взято с Delphi Knowledge Base: http://www.baltsoft.com/
{
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.
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.
Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
Отправить комментарий