![]() |
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; |
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; |
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 13:07:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi