Ver Mensaje Individual
  #2  
Antiguo 16-12-2007
albcastro albcastro is offline
Registrado
 
Registrado: dic 2007
Ubicación: Madrid
Posts: 5
Reputación: 0
albcastro Va por buen camino
Parece que quedó vacio. Repito:
(********
A continuación DOS Procedimientos de un Programa hecho en DELPHI, para verificar
los códigos de una Cuenta Corriente y la Letra de un DNI.
Estos procedimientos pertenecen en el programa al Evento de hacer Click en sendos Botones
para verificar cada cosa y que se llaman "BtVeriCu" y "BtVeriDni".
Nota importante: Los Datos se obtienen en este caso de una Base de Datos que tiene activada
un Objeto Tabla llamado "Table1".
En la Cuenta Corriente los Campos de la Base se llaman: ENT (la entidad), OFi (la oficina),
DC (código control) y NRC (número de cuenta). La Base los tiene por separado y son alfanuméricos.
Asimismo el DNI y la Letra (LC). También alfanuméricos. Aunque según el caso sólo admitan números
al rellenarlos.
Para alguna duda: ea4hm@ure.es
*********)

// Verifica la validez de la Cuenta
procedure TForm2.BtVeriCuClick(Sender: TObject);
const
Ps: Array[1..10] of Integer=(6,3,7,9,10,5,8,4,2,1);
var
I, N : Integer;
V : Boolean;
Ent, Ofi, Dc, Nrc, Enof, Todo, Dcv : String;
Dt : Array[1..10] of Integer;
begin
// Lee Datos
Ent:=Table1.FieldbyName('ENT').AsString;
Ofi:=Table1.FieldbyName('OFI').AsString;
Dc:=Table1.FieldbyName('DC').AsString;
Nrc:=Table1.FieldbyName('NRC').AsString;
Enof:=Ent + Ofi;
Todo:=Ent + Ofi + Dc + Nrc;
If Length(Todo)<20 then begin
ShowMessage('Falta algún Número');
Exit;
end;
V:=True;
For I:=1 to 20 do
If not (Todo[i] in['0'..'9']) then
V:=False;
If not V then begin
ShowMessage('Algún caracter no numérico');
Exit;
end;
// Aplica Algoritmo 1ª parte
For I:=1 to 8 do
Dt[i]:=Ord(Enof[9-I])-48; { Invierte orden }
N:=0;
For I:=1 to 8 do
N:=N + Dt[i] * Ps[i];
N:=N Mod 11;
N:=11 - N;
If N=10 then N:=1;
If N=11 then N:=0;
Dcv:=Chr(N+48);
// Aplica Algoritmo 2ª parte
For I:=1 to 10 do
Dt[i]:=Ord(Nrc[11-I])-48; { Invierte orden }
N:=0;
For I:=1 to 10 do
N:=N + Dt[i] * Ps[i];
N:=N Mod 11;
N:=11 - N;
If N=10 then N:=1;
If N=11 then N:=0;
Dcv:=Dcv + Chr(N+48);
If Dc=Dcv then
ShowMessage('CUENTA CORRECTA')
else
ShowMessage('DATOS INCORRECTOS');
end;

// Verifica la validez deL NIF
procedure TForm2.BtVeriDniClick(Sender: TObject);
const
Let: Array[0..22] of Char=
('T','R','W','A','G','M','Y','F','P','D','X','B',
'N','J','Z','S','Q','V','H','L','C','K','E');
var
I : Integer;
Dni : String;
Dn : Cardinal;
L : Char;
Lt : String;
V : Boolean;
begin
Dni:=Table1.FieldbyName('DNI').AsString;
Lt:=Table1.FieldbyName('LC').AsString;
If Length(Dni)<8 then begin
ShowMessage('Falta algún Número');
Exit;
end;
V:=True;
For I:=1 to 8 do
If not (Dni[i] in['0'..'9']) then
V:=False;
If not V then begin
ShowMessage('Algún caracter no numérico');
Exit;
end;
// Aplica Algoritmo
Dn:=StrToInt(Dni);
L:=Let[Dn mod 23];
If Lt=L then
ShowMessage('NIF CORRECTO')
else
ShowMessage('DATOS INCORRECTOS');
end;

Responder Con Cita