Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Verificación de Cuenta Corriente y Nif (https://www.clubdelphi.com/foros/showthread.php?t=80849)

albcastro 16-12-2007 20:05:06

Verificación de Cuenta Corriente y Nif
 
[delphi]
(********
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;


albcastro 16-12-2007 20:05:07

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;


albcastro 16-12-2007 21:18:27

Atención, hay errores:
Las variables Todo, Dt, Ds y Dni cuando están dentro de un
bucle FOR con Variable "I" les falta: el índice "corchete"
I "corchete", ya que estas etiquetas han desaparecido y
convertido el resto del texto en letra Itálica.


La franja horaria es GMT +2. Ahora son las 21:48:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi