La cara oculta de delphi 4 de ians marteens deja claro como hacerlo, aqui te pongo un trocito de código que yo uso.
notas:
MensajeAdd es simplemente un log de inicio de sesion que hago para detectar errores.
gl.db es un registro global de la aplicación donde se guarda las opciones (las inicializo desde un TiniFile)
Código:
if misession.Active then
misession.Close;
with MiSession do
begin
try
MensajeAdd(true,'1 Configurar la sesion' );
MensajeAdd(true,'1.1 Usando Carpeta de Red: '+gl.DB.NetFileDir );
NetFileDir:=gl.DB.NetFileDir ;
MensajeAdd(true,'1.2 Usando carpeta temporal: '+gl.DB.PrivateDir );
PrivateDir:= gl.DB.PrivateDir ;
MensajeAdd(true,'1.3 Modo Sesion: cmAll');
ConfigMode := cmAll;
MensajeAdd(true,'1.4 Modo servidor: '+BooltoStr(ini.ReadInteger('Settings','RGClient',1)= 0,true));
MensajeAdd(true,'2 Alias' );
if IsAlias(gl.DB.Alias) then
begin
MensajeAdd (true,'2.1 Usando alias existente: '+gl.DB.Alias);
end
else
begin
MensajeAdd(true,'2.1 Creando Alias: '+gl.DB.Alias +' para la carpeta:'+gl.DB.DatabaseDir );
AddStandardAlias(gl.DB.Alias , gl.DB.DatabaseDir, 'Paradox');
end;
except
on E:Exception do HandleException('Error al configurar la sesion',E);
end;
end;
with dtbppal do
begin
try
MensajeAdd(true,'3 Configurar Base de datos:');
DatabaseName := gl.DB.Alias ;
MensajeAdd(true,'3.1 Asignando Controlador');
DriverName:= 'STANDARD';
MensajeAdd(true,'3.2 Carpeta de Base de Datos: '+ gl.DB.DatabaseDir );
params.Add('PATH='+gl.DB.DatabaseDir );
params.Add('DEFAULT DRIVER=PARADOX');
params.Add('ENABLE BCD=FALSE');
MensajeAdd ( true, '3.1 Asignado Alias a la Base de Datos. ');
except
on E:exception do HandleException('Error de BDE',E);
end;
end; // dtbppal
MensajeAdd(true,'4 Alias: '+ gl.DB.Alias );
try
for i:=0 to pred(ComponentCount) do
if (components[i] is TTable) then
TTable(components[i]).DatabaseName:= gl.DB.Alias
else
if (components[i] is TQuery) then
TQuery(components[i]).DatabaseName:=gl.DB.Alias;
MensajeAdd(true,'4.1 Alias asignado' );
Misession.Open;
MensajeAdd(true,'5 Sesion Activa');
dtbppal.Open;
MensajeAdd(true,'6 **Conectado a Base de Datos**');
except
on E:Exception do
HandleException('No se ha podido Abrir la Base de Datos.',E);
end; // except
// saludos