Ver Mensaje Individual
  #3  
Antiguo 16-09-2003
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 172
Reputación: 21
pruz Va por buen camino
Talking

Ok, aqui va el codigo

unit UAcceso;

interface

uses

type
DLLEncripta = Function(Clave_Encripta: String):String;
DLLDesEncripta = Function(Clave_Encripta: String):String;
DLLValidaRegistro = Function( Crut, Cnom, cReg1, cReg2, cSistema : String ) : Integer;

type

TFAcceso = class(TForm)
ksoBalloonForm1: TksoBalloonForm;
EEmpresa: TEdit;
EUsuario: TEdit;
EPassword: TEdit;
BAcepta: TdxButton;
procedure BAceptaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
InstanciaDLL : THandle;
Encripta : DLLEncripta;
DesEncripta : DLLDesEncripta;
ValidaRegistro: DLLValidaRegistro;
FAcceso: TFAcceso;
Ok_Usuario, Ok_Empresa : Boolean;
Clave : String[10];
Implementation

Uses Usiscont, Datos;
{$R *.DFM}

procedure TFAcceso.BAceptaClick(Sender: TObject);
begin
if not ModuloDatos.QAcceso.Eof then begin
Ok_Usuario := True;
InstanciaDll := LoadLibrary('claves.dll');
if InstanciaDll = 0 then begin
Mensaje.MessageDlg( 'Error en Carga de Dll.' , mtError , [mbCancel] , 0 ) ;
exit;
end;
try
@Encripta := GetProcAddress(InstanciaDll,'Encripta');
if @Encripta <> nil then Clave := Encripta(Trim(Epassword.Text))
else Mensaje.MessageDlg( 'Error de Procedimiento de Dll.' , mtError , [mbCancel] , 0 ) ;
finally
FreeLibrary(InstanciaDll);
end;
if ModuloDatos.QAcceso['ClaveUsuario'] <> Clave then Ok_Usuario := False;
if not Ok_Usuario then begin
Mensaje.MessageDlg( 'Acceso Denegado. Usuario o Clave mal Digitado..' , mtError , [mbCancel] , 0 ) ;
Epassword.SetFocus;
end else begin
TipoUsuario := EUsuario.Text;
Acceso := ok_Usuario;
Ok_Empresa := False;

if Ok_Usuario then begin
//busca claves y empresa
ModuloDatos.parametros.open;
if ModuloDatos.Parametros.Locate( 'RUTEMP' , Trim(EEmpresa.Text) , [ loCaseInsensitive ] ) then begin
Empresa := Trim( EEmpresa.Text);
Acceso := Ok_usuario;
InstanciaDll := LoadLibrary('claves.dll');
if InstanciaDll = 0 then begin
Mensaje.MessageDlg( 'Error en Carga de Dll.' , mtError , [mbCancel] , 0 ) ;
exit;
end;
try
@ValidaRegistro := GetProcAddress(InstanciaDll,'ValidaRegistro');
if @ValidaRegistro <> nil then Ok_Empresa := ValidaRegistro(ModuloDatos.Parametros['Rutemp'],ModuloDatos.Parametros['Empresa'],ModuloDatos.Parametros['Reguno'],ModuloDatos.Parametros['Regdos'],'Contabilidad') = 1
else Mensaje.MessageDlg( 'Error de Procedimiento de Dll.' , mtError , [mbCancel] , 0 ) ;
finally
FreeLibrary(InstanciaDll);
end;
if Ok_empresa then begin
//Mensaje.MessageDlg( 'Empresa Ok' , mtError , [mbCancel] , 0 ) ;

end else begin
Mensaje.MessageDlg( 'Empresa no Registrada' , mtError , [mbCancel] , 0 ) ;
Acceso := False;
close;
end;
end else begin
Mensaje.MessageDlg( 'Rut Empresa No Existe' , mtError , [mbCancel] , 0 ) ;
EEmpresa.SetFocus;
end;

end;
end;
end else begin
Mensaje.MessageDlg( 'Acceso Denegado. Usuario o Clave mal Digitado..' , mtError , [mbCancel] , 0 ) ;
Epassword.SetFocus;
end;
ModuloDatos.QAcceso.Close; //aqui da error
if not Ok_usuario then //aqui da error
ModuloDatos.Contabilidad.Connected := False ;
except
Mensaje.MessageDlg( 'Error en la Conexión' , mtError , [mbCancel] , 0 ) ;
EEmpresa.SetFocus;
end ;
end;

end.
Responder Con Cita