Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2007
albcastro albcastro is offline
Registrado
 
Registrado: dic 2007
Ubicación: Madrid
Posts: 5
Poder: 0
albcastro Va por buen camino
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;

Responder Con Cita
  #2  
Antiguo 16-12-2007
albcastro albcastro is offline
Registrado
 
Registrado: dic 2007
Ubicación: Madrid
Posts: 5
Poder: 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
  #3  
Antiguo 16-12-2007
albcastro albcastro is offline
Registrado
 
Registrado: dic 2007
Ubicación: Madrid
Posts: 5
Poder: 0
albcastro Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:00:26.


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
Copyright 1996-2007 Club Delphi