Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2007
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Arrow Validar RUT, como implementarlo

Hola a todos... primero que nada... agradecimientos por la web y sus usuarios... e aprendido mucho siguiendo vuestros comentarios, mas que una herramienta es mi escuela esta web... en fin... la duda...

Soy un novatisimo en esto... pero me encanta y espero seguir en esto por mucho, pero me encontrado con un problema, ya han tratado el tema antes, e buscado en los hilos y no encuentro solucion, me refiero al famoso RUT chileno (DNI en otros paises, es lo mismo).
la idea es validar si el rut es correcto o no y lo unico que e encontrado en la web es esto:

Código Delphi [-]
Function ValRut(Rut: String):String;
 var
    Cuenta, Suma, totalrut, Revisa : Integer;
 begin
    Suma:=2;
    TotalRut:=0;
    For Cuenta:=Length(Trim(rut)) downto 1 do
      begin
         if Suma>7 then Suma:=2;
         Totalrut:=Totalrut+((StrToInt(copy(rut,cuenta,1)))*suma);
         Suma:=Suma+1;
      end;
    Revisa:=Round((frac(Totalrut/11)*10)+0.5);
    Revisa:=11-revisa;
    If Revisa=10 then Result:='K'
       else
         begin
           If Revisa=11 then Result:='0'
              else Result:=IntToStr(Revisa);
         end;
 end;



el problema es que no se como usarlo, si es que hay que declararlo, donde... etc... sorry... se que es tonto y de novatos... pero necesito me ayuden... la idea es que exista un edit o un maskedit en el cual escrivo un rut que seria algo asi: 11.268.924-4, y que al guardarlo a travez de un Button verifique si el RUT es correcto o no, de ser incorrecto me de un aviso... si pudieran adjuntar un ejemplo si no es mucho pedir... estaria mas que agradesido...

de antemano muchisimas gracias...

Última edición por Lenny fecha: 27-09-2007 a las 22:41:04.
Responder Con Cita
  #2  
Antiguo 27-09-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Lo ideal es que indicaras el método de cálculo del RUT chileno, para idear un algoritmo que lo genere. O en su defecto el algoritmo de generacíón y entre todos podríamos perfeccionarlo
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 27-09-2007
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Arrow

Gracias por el pronto interes... esto es lo que e encontrado:

ALGORITMO 1

1. Multiplicar cada dígito del RUT se por 2, 3, ..., 7, 2, 3, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Calcular el resto de la división por 11
4. El Dígito Verificador es 11 menos el resultado anterior. Si es 10, se cambia por 'k'.


EJEMPLO. RUT: 11.222.333

1. 1 1 2 2 2 3 3 3 <-- RUT
* 3 2 7 6 5 4 3 2 <-- 2, 3, 4, 5, 6, 7, 2, 3, ...
--------------------------------------
3 2 14 12 10 12 9 6

2. SUMA: 3 + 2 + 14 + 12 + 10 + 12 + 9 + 6 = 68

3. 68 : 11 = 6
- 66
----
2 <-- RESTO

4. 11 - 2 = 9 <-- DÍGITO VERIFICADOR

______________________________________________________

ALGORITMO 2, versión alternativa

1. Multiplicar cada dígito del RUT se por 9, 8, ..., 4, 9, 8, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Calcular el resto de la división por 11
4. El Dígito Verificador es el resultado anterior. Si es 10, se cambia por 'k'.


EJEMPLO. RUT: 11.222.333

1. 1 1 2 2 2 3 3 3 <-- RUT
* 8 9 4 5 6 7 8 9 <-- 9, 8, 7, 6, 5, 4, 9, 8, ...
--------------------------------------
8 9 8 10 12 21 24 27

2. SUMA: 8 + 9 + 8 + 10 + 12 + 21 + 24 + 27 = 119

3. 119 : 11 = 10
- 110
-----
9 <-- RESTO

4. 9 <-- DÍGITO VERIFICADOR


______________________________________________________

ALGORITMO 3, propiedades de la división por 11

1. Multiplicar cada dígito del RUT se por 9, 8, ..., 4, 9, 8, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Suma alternada de la lista reversa de los dígitos del resultado anterior.
4. El Dígito Verificador es el resultado anterior. Si es 10, se cambia por 'k'.


EJEMPLO. RUT: 11.222.333

1. 1 1 2 2 2 3 3 3 <-- RUT
* 8 9 4 5 6 7 8 9 <-- 9, 8, 7, 6, 5, 4, 9, 8, ...
--------------------------------------
8 9 8 10 12 21 24 27

2. SUMA: 8 + 9 + 8 + 10 + 12 + 21 + 24 + 27 = 119

3. SUMA ALTERNADA: 119 -> 9 - 1 + 1 = 9

4. 9 <-- DÍGITO VERIFICADOR

Espero sirva de algo, ya que e visto en la red a muchos interesados en este asunto y nunguna solucion... gracias nuevamente por el interes, me ayudarian bastante.
Responder Con Cita
  #4  
Antiguo 27-09-2007
Avatar de rruz
[rruz] rruz is offline
Miembro Premium
 
Registrado: jun 2006
Posts: 146
Poder: 18
rruz Va por buen camino
Validar Rut Chile

Hola aqui tienes unas funciones que te pueden ayudar

Código Delphi [-]

Function  RutId(Rut: Longint): Char;
Function  RutValido(Rut: Longint;Digito_Id:Char): Boolean;
Function  RutCompletoStr(Rut: Longint):String;


Function  RutCompletoStr(Rut: Longint):String;
Begin 
Result:=FormatFloat('#,',Rut)+'-'+RutId(Rut);
End;

Function  RutId(Rut: Longint): Char;
Var Suma      : Integer; RutStr    : String;
NumTemp   : Byte;
Multiplo  : Byte;
i         : Integer;
DigitoTemp: String[2];
Begin  Result    :='?';

if (Rut>0) Then Begin 
Suma    :=0; 
RutStr  :=IntToStr(Rut); 
Multiplo:=2;  
for i:=Length(RutStr) downto 1 do 
Begin         
NumTemp :=StrToInt(RutStr[i]);         
Suma    :=Suma+(Multiplo*NumTemp);         
inc(Multiplo);        
 if Multiplo>7 then Multiplo:=2;
End;

i:=11-(Suma mod 11);

Case i of 11 : DigitoTemp:='0';
10 : DigitoTemp:='K';
else DigitoTemp:=IntToStr(i);
End;

Result:=DigitoTemp[1];

End;
End;

Function RutValido(Rut: Longint;Digito_Id:Char): Boolean;
Begin 
Result:=RutId(Rut)=UpCase(Digito_Id); 
End;
Saludos

Última edición por rruz fecha: 27-09-2007 a las 23:00:57.
Responder Con Cita
  #5  
Antiguo 27-09-2007
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Arrow

muchas gracias... pero... pecando de ignorante... como lo uso en la form??? tomando en cuenta que es un edit donde escrivo el RUT, y un boton que lo guarda en paradox... me pueden explicar??? a prueba de tontos please...
si devo declararlo en algun lugar... donde devo avilitarlo... etc... etc... sorry si les colmo la paciencia, con un ejemplo estaria mas que agradesido... gracias de antemano...

Última edición por Lenny fecha: 27-09-2007 a las 23:13:57.
Responder Con Cita
  #6  
Antiguo 28-09-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Lenny,

Tal parece que si eres un iniciado. En forma simple, una unidad (unit) cualquiera está divida en dos secciones: interface e implementation. Todo lo que declares en la primera podrá ser "visto" y accedido desde afuera. Es decir que desde otra unit puede tener acceso y hacer uso de los procedimientos, funciones, variables, tipos, clases y constantes. En implementation estará el código de todo lo que declares en la sección interface. Podría darte mayores detalles, pero prefiero dejar hablar a un maestro en el tema que lo explica bien: Ian Marteens, en su libro la Cara Oculta de Delphi 4. Si buscas en internet vas a encontrar el pdf muy fácil. Te recomiendo su lectura.

En tu caso, te recomiendo el capítulo 3 y siguientes. Sobre todo la página 62 y 63. No tengo delphi a mano, disculpa... sino te preparaba un ejemplo sencillo de como se procede.

Espero que se me entienda con lo que he dicho.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como validar fechas Velia Varios 2 13-12-2005 00:46:13
como validar un dbgrid Shidalis OOP 9 03-08-2005 15:48:04
TJVoutlookbar como validar ? martita OOP 0 14-07-2005 02:44:25
Como Validar un Password carlos gonzalez Varios 2 11-05-2005 13:18:56
Como validar con una DBgrid... uper Firebird e Interbase 11 18-04-2005 17:45:00


La franja horaria es GMT +2. Ahora son las 01:24:02.


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