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 11-11-2004
chivofbv chivofbv is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Poder: 0
chivofbv Va por buen camino
Question eliminar caracteres especiales

como puedo quitarle a una cadena los caracteres especiales?
Responder Con Cita
  #2  
Antiguo 11-11-2004
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: may 2003
Ubicación: Locombia papá!
Posts: 267
Poder: 21
diegofhernando Va por buen camino
A q te refieres con caracteres especiales... podrias especificar un poco mas...
__________________
Diego. Colombia es pasión.
Responder Con Cita
  #3  
Antiguo 11-11-2004
chivofbv chivofbv is offline
Registrado
 
Registrado: nov 2004
Posts: 8
Poder: 0
chivofbv Va por buen camino
Thumbs up

lo que pasa es que estoy insertando esa cadena en una base de datos y al final de lo insertado me esta colocando un cuadrado que no he podido eliminar ni con trim, leftstr, etc. estoy trabajando con SQLQuery de DBExpress com MS SQL.
Responder Con Cita
  #4  
Antiguo 11-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
const saltocarro = #13;
const avancelinea = #10;
const saltolinea = #13#10;

no sé si el delphi que tienes instalado tendrá la rutina ReplaceStr que te sirve para ese propósito.

Si usas las RxLibs, en la unidad NkStrs viene rutinas para el tratamiento de campos memo, algunas rutinas quitan los caracteres especiales.

alguna de las constantes esas puede ser el cuadrado que te pone, si no lo es, será un codigo ASCII menor de 31 (codigos de control),

Intenta copiar y pegar el cuadradito ese en un Edit que tenga en el evento OnChange el codigo ... showmessage(inttostr(edit1.texto[1])) para saber que código es.

Tambien puede que no esté bien configurada la tabla de códigos para el idioma, el dialecto o similar.....

Saludos

Última edición por Lepe fecha: 11-11-2004 a las 16:05:52.
Responder Con Cita
  #5  
Antiguo 03-06-2011
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
reviviendo el hilo

tengo una cadena que quiero que quite todo los caracteres especiales como (,?/%"^¨... etc... existe alguna funcion especifica para hacerlo?
Responder Con Cita
  #6  
Antiguo 03-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Wbarrantes.
Cita:
existe alguna funcion especifica para hacerlo?
No conozco (no quiere decir que no haya), pero es muy secillo hacerte una que lo haga:
Código Delphi [-]
function QuitarEspeciales(const Cad: string): string;
const
  VALIDOS=[' ','0'..'9','A'..'Z','a'..'z','á','é','í','ó','ú'];
var
  i: Integer;
begin
  Result:= '';
  for i:= 1 to Length(Cad) do
   if Cad[i] in VALIDOS then Result:= Result+Cad[i]
end;

Ejemplos de llamada:
Código Delphi [-]
var
  st: string;
begin
   howMessage(QuitarEspeciales('Me costó $100,| #%en& el c#omercio')); // muestra: 'Me costó 100 en el comercio'
   st:= QuitarEspeciales('Me costó $100,| #%en& el c#omercio');
   ...

Podés agregar o eliminar caracteres a considerar como válidos en la constante VALIDOS.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 04-06-2011
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
Grasias Ecfisa, ya tengo un procedimiento que realiza la limpieza...

Código Delphi [-]
begin
Largo:= Length (texto)+1 ;
contador:=1;
  while contadordo
  begin
    valor := Ord(texto[contador]);
    if (valor>LimiteInferior) and (Valorthen
      begin
        TextoLimpio:= TextoLimpio+ texto[contador];
      end  ;
    if Valor=39 then
      begin
        TextoLimpio:= TextoLimpio+' ';
      end;
    contador:=contador+1;
  end;
 Limpiar:= TextoLimpio;
end;
en este caso por medio del codigo Ascii y con unas variantes...
pero si me interesa saber especificamente si existe algun procedimiento de Delphi como tal.... como el Uppercase y funciones similares...

igual agradesco mucho tu aporte...
Responder Con Cita
  #8  
Antiguo 20-01-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Código Delphi [-]
function QuitarEspeciales(const Cad: string): string;
const
  VALIDOS=[' ','0'..'9','A'..'Z','a'..'z','á','é','í','ó','ú'];
var
  i: Integer;
begin
  Result:= '';
  for i:= 1 to Length(Cad) do
   if Cad[i] in VALIDOS then Result:= Result+Cad[i]
end;

Estimado ecfisa :

Quisera saber como se podría en esta función reemplazar el carácter eliminado por un espacio.
Saludos y gracias
Responder Con Cita
  #9  
Antiguo 20-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por radenf Ver Mensaje
Quisera saber como se podría en esta función reemplazar el carácter eliminado por un espacio.
Desconozco si será la mejor opción en tu cso, pero puedes hacerlo con una función como la siguiente. Esta sustituye los caracteres que le indiques por otro en particular:
Código Delphi [-]
  Function ghReplace (Const Value :String; Const Chrs :TSysCharSet;
    Const NewChr :Char) :String;
  Var
    I :Integer;
  Begin
    Result := Value;

    For I := 1 To Length (Result) Do
      If Result [i] In Chrs Then
        Result [i] := NewChr;
  End;

Ejemplo de llamada:
Código Delphi [-]
String2 := ghReplace (String1, [#0..#31], ' ');
La sentencia anterior obtiene una cadena (String2) a partir de otra (String1), reemplazando todos los caracteres ASCII "invisibles" por un espacio. Y claro está, puedes usar la misma variable String para guardar el resultado:
Código Delphi [-]
S := ghReplace (S, [#0..#31], ' ');

O, como cualquier otra función, pasar su resultado directamente a otra rutina:
Código Delphi [-]
Objeto.HacerAlgoCon (ghReplace (S, [#0..#31], ' '), True);

El tipo TSysCharSet (conjunto de caracteres) es de la unidad estándar SysUtils .

Última edición por Al González fecha: 20-01-2013 a las 20:11:50.
Responder Con Cita
  #10  
Antiguo 21-01-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias [Al Gonzalez].
Esta función la necesito para mejorar el aspecto visual de varios grids que reciben información de servidores, cuyos datos no siempre son ingresados adecuadamente.
La probaré y te cuento.
Saludos
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 07:49: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
Copyright 1996-2007 Club Delphi