Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir Rut sólo en números (https://www.clubdelphi.com/foros/showthread.php?t=26385)

joi 20-10-2005 23:07:56

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é:confused: cómo hacerlo


gracias

dec 20-10-2005 23:34:37

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. ;)

lucasarts_18 21-10-2005 00:42:50

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

dec 21-10-2005 00:48:06

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. :cool:

RONPABLO 21-10-2005 04:54:07

Pue aqui en Colombia el RUT es el Registro Unico Tributario, falta ver que RUT esta buscando!!!

joi 21-10-2005 17:20:47

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

roman 21-10-2005 17:44:47

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

joi 21-10-2005 18:30:51

Muchas Gracias....

Intentare de ese modo... te cuento

Joi

dec 21-10-2005 21:48:00

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;

Casimiro Notevi 21-10-2005 21:54:44

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]

dec 21-10-2005 22:16:27

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;

lucasarts_18 21-10-2005 22:22:01

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..

Casimiro Notevi 22-10-2005 00:06:44

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 :D

Ya en serio, a veces lo más simple resulta lo más efectivo.

joi 24-10-2005 17:25:01

Ya probé esa forma y me resulto bien...

Muchas Gracias a todos los que respondieron..., me fue de mucha ayuda...


La franja horaria es GMT +2. Ahora son las 01:00:58.

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