PDA

Ver la Versión Completa : Como creo un alias con codigo


maravert
30-09-2004, 07:38:46
Hola a todos, espero me puedan ayudar, he hecho una alias de Nombre Equipos de tipo Paradox. con PATH 'c:\equipos'. Solo que al querer distrubuir el programa en otra computadora no se instala el BDE, y lo que hago es que lo instalo aparte.

La pregunta es como creo ese alias en la otra computadora utilizando codigo.


Muchas gracias.

Neftali [Germán.Estévez]
30-09-2004, 09:20:41
La pregunta es como creo ese alias en la otra computadora utilizando codigo.
En el truco 152 de Trucomania (http://www.q3.nu/trucomania/) tienes cómo crear un Alias temporal desde tu aplicación.

A parte puedes probar éste código:


procedure AddBDEAlias(sAliasName, sAliasPath, sDBDriver: string);
var
h: hDBISes;
begin
DBIInit(nil);
DBIStartSession('dummy', h, '');
DBIAddAlias(nil, PChar(sAliasName), PChar(sDBDriver),
PChar('PATH:' + sAliasPath), True);
DBICloseSession(h);
DBIExit;
end;

// Para crear un Alias llamado EQUIPOS sobre el directorio c:\equipos con un Driver de Paradox sería algo así:
AddBDEAlias('EQUIPOS', 'C:\Equipos', 'PARADOX');


El código siguiente crea uno Persistente, aunque éste no lo he podido probar...


uses Windows, SysUtils, DbiProcs, DbiErrs, DBTables;
const
CRLF = #13 + #10;
ERR_ALIASDRIVERNOTFOUND = 'Specified driver doesn''t exist.';
ERR_ALIASALREADYEXISTS = 'The Alias (%s) already exists.' + CRLF +
'Would you like to reconfigure it?';
ERR_ALIASINVALIDPARAM = 'Invalid Alias name.';
ERR_ALIASCLOSEBDE = 'Error closing the BDE.' + CRLF +
'Please close all applications and restart Windows';
ERR_ALIASOPENBDE = 'Error initializing BDE. Cannot create Alias.';
procedure CreateAlias(sAlias, sPath, sDriver: string;
PersistentAlias: Boolean);
var
dbEnv: DbiEnv;
dbRes: DbiResult;
Resp: word;
begin
{ Sets the BDE environment }
with dbEnv do
begin
StrPCopy(szWorkDir, sPath);
StrPCopy(szIniFile, '');
bForceLocalInit := True;
StrPCopy(szLang, '');
StrPCopy(szClientName, 'dbClientName');
end;
{ Initalizes BDE with the environment dbEnv }
if DbiInit(@dbEnv) <> DbiERR_NONE then
raise Exception.Create(ERR_ALIASOPENBDE);
{ Adds the specified Alias }
if sDriver = 'STANDARD' then
dbRes := DbiAddAlias(nil, pchar(sAlias), nil,
pchar('PATH:' + sPath), PersistentAlias)
else
dbRes := DbiAddAlias(nil, pchar(sAlias), pchar(sDriver),
pchar('PATH:' + sPath), PersistentAlias);
case dbRes of
DbiERR_INVALIDPARAM:
raise Exception.Create(ERR_ALIASINVALIDPARAM);
DbiERR_NAMENOTUNIQUE:
begin
resp := MessageBox(0, pchar(Format(ERR_ALIASALREADYEXISTS, [sAlias])),
'CreateAlias', MB_ICONSTOP + MB_YESNO);
if Resp = ID_YES then
begin
Check(DbiDeleteAlias(nil, pchar(sAlias)));
CreateAlias(sAlias, sPath, sDriver, PersistentAlias);
end;
end;
DbiERR_UNKNOWNDRIVER:
raise Exception.Create(ERR_ALIASDRIVERNOTFOUND);
end;
if DbiExit <> DbiERR_NONE then
raise Exception.Create(ERR_ALIASCLOSEBDE);
end; {CreateAlias}