Hola, cd.rafael.
A ver, lo primero son consejillo. Cuando crees y liberes objetos, yo me aseguraría de que se liberen siempre, haya habido errores o no en el código intermedio. Lo haría de la siguiente manera:
Código Delphi
[-]
Objeto := TObjeto.Create(param);
try
finally
Objeto.Free; end;
Por otra parte, sobre este código:
Código Delphi
[-]
procedure pFormaMaestro(pStUsuario: String; pStPassword: String; pStDB: String; pStEsquema: String; pStTabla: String);
begin
frmSplash := TfrmSplash.Create(nil);
frmSplash.Show;
frmSplash.Update;
dtmConexion := TdtmConexion.Create(nil);
dtmConexion.gStTabla := pStTabla;
dtmConexion.gStUsuario := pStUsuario;
dtmConexion.gStPassword := pStPassword;
dtmConexion.gStDB := pStDB;
dtmConexion.gStEsquema := pStEsquema;
dtmConexion.pInicioDatos;
frmSplash.Hide;
frmSplash.Free;
if (dtmConexion.gBlSelect) then
begin
try
frmPrincipal := TfrmPrincipal.Create(nil);
frmPrincipal.ShowModal;
dtmConexion.cdsPrincipal.Close;
dtmConexion.qryPrincipal.Close;
frmPrincipal.Hide;
frmPrincipal.Free;
except
on E: Exception do
begin
ShowMessage(E.Message);
end;
end;
end;
end;
Lo primero de lo que me doy cuenta es que el DataModule no lo liberas nunca, a veces las llamadas a dll dan problemas por cosas así.
Por otra parte, yo he tenido problemas usando formularios y componentes de base de datos en dll, pero sólo con dbexpres. Y no he sido capaz de arreglarlo, es dbexpres es así