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 20-10-2005
joi joi is offline
Registrado
 
Registrado: oct 2005
Posts: 6
Poder: 0
joi Va por buen camino
Lightbulb Convertir Rut sólo en números

Hola!!

Tengo un dxedit en el que se debe ingresar el rut, luego este se debe filtrar para mostrar sólo los numeros..

Alguien me puede ayudar por favor..., soy novata en delphi... y no sé cómo hacerlo


gracias
Responder Con Cita
  #2  
Antiguo 20-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No te preocupes por lo de novata, ni mucho menos. Te demostraré que yo también lo soy. No tengo ni idea de lo que es un "dxedit" y no sé qué pueda ser una "rut". Así que como no te explayes (no temas hacerlo cuanto estimes oportuno) me parece que, personalmente, poco puedo decirte más que lo dicho. Bueno, sí. Que bienvenida al ClubDelphi y que eches un vistazo a la guía de estilo de los Foros, por si puede serte de utilidad.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por dec
Hola,

No tengo ni idea de lo que es un "dxedit" y no sé qué pueda ser una "rut".
Si no me equivoco en dxedit es un componente de la suite Developer Express, especificamente una caja de texto, en cuanto al rut, en Chile por lo menos, es un número único que identifica a una persona en el país, no se si será así en otro país.

Y en cuanto a nuestra amiga, creo que debería especificar un poco mas el problema..

Hasta luego
__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 21-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Aarón
Si no me equivoco en dxedit es un componente de la suite Developer Express, especificamente una caja de texto, en cuanto al rut, en Chile por lo menos, es un número único que identifica a una persona en el país, no se si será así en otro país.
Gracias Aarón. El caso es que había oído hablar del "RUT", y, sin embargo, no me lo quedé en la cabeza. A ver si ahora puede ser. Y sí, al menos aquí en esta España mía, esta España nuestra (es mentira, es de ellos), como dice la canción, también nos "marcan" con algo que se llama DNI, Documento Nacional de Identidad. Y multa al canto como no lo lleves y el guardia se ponga un tanto farruco.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 21-10-2005
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Pue aqui en Colombia el RUT es el Registro Unico Tributario, falta ver que RUT esta buscando!!!
Responder Con Cita
  #6  
Antiguo 21-10-2005
joi joi is offline
Registrado
 
Registrado: oct 2005
Posts: 6
Poder: 0
joi Va por buen camino
Estoy hablando del documento de identificacion de Chile.. el formato de este es ej:

12.345.126-K

Necesito sacarle los puntos y el guion es decir debe quedar como 12345126

ademas debo verificar que en los primeros 10 caracteres no existan letras...

Gracias por responder

joi
Responder Con Cita
  #7  
Antiguo 21-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Código Delphi [-]
var
  S: String;

begin
  S := '12.345.126-K';

  Delete(S, 3, 1);
  Delete(S, 6, 1);
  Delete(S, 9, 2);

  if StrToIntDef(S, -1) = -1 then
    ShowMessage('Formato incorrecto')
  else
    ShowMessage(S);
end;

// Saludos
Responder Con Cita
  #8  
Antiguo 21-10-2005
joi joi is offline
Registrado
 
Registrado: oct 2005
Posts: 6
Poder: 0
joi Va por buen camino
Muchas Gracias....

Intentare de ese modo... te cuento

Joi
Responder Con Cita
  #9  
Antiguo 21-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si el número RUT es parecido al DNI español lo propuesto por roman puede no funcionar como se espera. Me explico. Un RUT válido puede ser: "12.345.126-K", pero, en caso de que este también lo fuera: "124.345.126-K" el código de más arriba daría problemas. Yo optaría por algo así, so pena de que pueda mejorarse no poco lo que propongo:

Código Delphi [-]
 function ParsearNumeroRUT(const RUT: string) : string;
 resourcestring
   rsExcep = 'El número RUT: "%s" no es correcto.';
 begin
   Result := RUT; // Recogemos el número RUT en Result
   // Reemplazamos cualquier coincidencia de un punto.
   Result := StringReplace(Result, '.', '', [rfReplaceAll]);
   // Reemplazamos cualquier coincidencia de un guión.
   Result := StringReplace(Result, '-', '', [rfReplaceAll]);
   // Si el resultado "mide" más de diez caracteres...
   if Length(Result) >= 10 then
   begin
     // Comprobamos que estos no contengan letras
     if StrToIntDef(LeftStr(Result, 10), -1) = -1 then
       // Y si contiene letras informamos del problema
       raise Exception.Create(Format(rsExcep, [RUT]));
   end;
 end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 21-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También puedes hacer algo parecido a esto:
Código Delphi [-]
 i:integer;
 Result:='';
 
 S := '12.345.126-K';
 
 for i=1 to length(S) do
     if S[i] in ['0'..'9'] then
         Result := Result + S[i]
Responder Con Cita
  #11  
Antiguo 21-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo siguiente me ha confundido antes:


Cita:
Empezado por joi
Necesito sacarle los puntos y el guion es decir debe quedar como 12345126
En ese caso no precisas solamente sacarle los puntos y el guión, sino además también las letras. Si esto es así, la función que propuse antes no serviría, puesto que sacaría del RUT los puntos y los guiones, pero no así las letras. Propongo, pues, el siguiente cambio, que sí conseguiría quitar los puntos, los guiones y las letras del número RUT de marras:

Código Delphi [-]
function ParsearNumeroRUT(const RUT: string) : string;
 var
   s: string;
   i: integer;
 begin
   s := RUT; // Recogemos el número RUT
   // Fuera cualquier coincidencia de un punto.
   s := StringReplace(s, '.', '', [rfReplaceAll]);
   // Fuera cualquier coincidencia de un guión.
   s := StringReplace(s, '-', '', [rfReplaceAll]);
   // Fuera las letras del resultado
   for i := 1 to Length(s) do
     if (s[i] in ['0'..'9']) then
       Result := Result + s[i];
 end;
Sin embargo... lo que propone Casimiro me parece lo lógico, pues que al cabo se trataría solamente de quedarnos con los números del número RUT, de tal modo que la función de más arriba podría simplificarse del modo que propone Casimiro:

Código Delphi [-]
 function CasimiroParsearNumeroRUT(const RUT: string) : string;
 var
   s: string;
   i: integer;
 begin
   s := RUT;
   for i := 1 to Length(s) do
     if s[i] in ['0'..'9'] then
       Result := Result + s[i];
 end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #12  
Antiguo 21-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Para quitar el guión:

Código Delphi [-]
 function TFrmInterfaz.QuitarGuion(Cadena : ShortString):ShortString;
 var
   caracter : Integer;
 begin
   caracter := pos('-',Cadena);
   delete(Cadena,caracter,1);
   result := Cadena;
 end;

Hasta Luego..
__________________
No todo es como parece ser...
Responder Con Cita
  #13  
Antiguo 22-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por dec
Código Delphi [-]
  function CasimiroParsearNumeroRUT(const RUT: string) : string;
  var
    s: string;
    i: integer;
  begin
    s := RUT;
    for i := 1 to Length(s) do
      if s[i] in ['0'..'9'] then
        Result := Result + s[i];
  end;
Claro, de esta manera se quita todo menos los números.

Cedo el código a la comunidad bajo licencia GPL

Ya en serio, a veces lo más simple resulta lo más efectivo.
Responder Con Cita
  #14  
Antiguo 24-10-2005
joi joi is offline
Registrado
 
Registrado: oct 2005
Posts: 6
Poder: 0
joi Va por buen camino
Ya probé esa forma y me resulto bien...

Muchas Gracias a todos los que respondieron..., me fue de mucha ayuda...
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


La franja horaria es GMT +2. Ahora son las 16:59:54.


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