En mi empresa tubimos el mismo problema cuando empezamos a usar Citrix (una variante de Terminal Server). El problema radica (si mal no recuerdo) en que por defecto todos intentan usar el mismo directorio temporal para la sesión. Te adjunto un ejemplo para abrir una base de datos en AS/400, pero con pocos cambios podrás usarlo para archivos Paradox.
Código Delphi
[-]
procedure TDMMain.DataModuleCreate(Sender: TObject);
var
Tmp: PChar;
FDirTemp: string;
Condicionantes: string;
begin
IniciaFormatos;
if Database.Connected then
Database.Close;
GetMem(Tmp, 255);
GetTempPath(255, Tmp);
FDirTemp := Trim(string(Tmp)) + Copy(ExtractFileName(ParamStr(0)), 1,
Length(ExtractFileName(ParamStr(0))) - Length(ExtractFileExt(ParamStr(0))));
FreeMem(Tmp);
if not DirectoryExists(FDirTemp) then
CreateDir(FDirTemp);
Session.PrivateDir := FDirTemp;
try
FLogin := TFLogin.Create(Application);
if FLogin.ShowModal = mrOk then
begin
CfgInicio.Usuario := FLogin.Usuario.Text;
Application.ProcessMessages; ConectaBD(Database, FLogin.Usuario.Text, FLogin.Password.Text)
end;
finally
FLogin.Free;
end;
if not Database.Connected then
begin
MessageDlg('No se pudo iniciar la aplicación', mtError, [mbOk], 0);
Application.Terminate;
end;
end;
procedure TDMMain.ConectaBD(DB: TDatabase; const UserID, Password: string);
begin
DB.AliasName := 'AS400';
DB.TransIsolation := tiReadCommitted;
DB.Params.Clear;
DB.Params.Add('user name=' + UserID);
DB.Params.Add('password=' + Password);
try
DB.Open;
except
on e: exception do MessageDlg('Se ha producido el siguiente error: ' + #13#10 + e.Message,
mtError, [mbOk], 0);
end;
end;
Para que funcione correctamente debes de tener en el TDataModule un obteto TDatabase y un objeto TSession