Inicio > Difícil, Trucos > Eliminar los “saltos de línea” de un TStrings

Eliminar los “saltos de línea” de un TStrings

viernes, 2 de noviembre de 2007 Dejar un comentario Ir a comentarios
Share Button

A veces es interesante poder acceder al contenido de un TStrings (de un TMemo, por ejemplo) como un único string o cadena.
Para eso, Delphi ha dotado a la clase TStrings del método Text, que devuelve el contenido del TStrings como una cadena simple. El inconveniente, es que dentro del resultado van incluídos los caractreres de “Salto de línea” y “Retorno de carro”. ¿Cómo eliminarlos?

Con ésta sencilla función se pueden eliminar y/o susituir por otro caracter (espacio,…).

1
2
3
4
5
6
7
8
9
10
{:Elimina los saltos de línea (caracteres #10 y #13; salto de linea y salto
de carro) de un TStrings.}
function QuitarSaltosLinea(Strs: TStrings;  
                          CharReplace:String=STR_EMPTY):String;
var
   Str:string;
begin
   Str := AnsiReplaceStr(Strs.Text, #10, CharReplace);
   Result := AnsiReplaceStr(Str, #13, CharReplace);
end
Share Button
  1. pacman
    lunes, 8 de noviembre de 2010 a las 18:45 | #1

    no sirve

  2. Neftalí
    lunes, 8 de noviembre de 2010 a las 20:32 | #2

    @pacman
    Pues ya dirás porqué no sirve, porque llevo años utilizando esta rutina.
    O das más explicaciones o das el error (si es que te da alguno).

    ;-(

  3. Omar Romero
    miércoles, 24 de noviembre de 2010 a las 14:17 | #3

    Lo probe y funciona perfectamente. Es la solución ya que probe varias y nada.

    Muchas gracias

  4. fernandox
    jueves, 10 de febrero de 2011 a las 20:43 | #4

    hola, yo tengo una duda…
    tengo una rutina para ‘postear’ en un foro, donde le paso como variable el contenido de un Tmemo como cuerpo del post.. el problema es que no reconoce los saltos de linea. la parte del codigo que manda el post es:

    …..
    parametros.Add(‘title=’ + Edit2.text ); // edit 2 el titulo del post
    //aqui el problema en memo6
    parametros.Add(‘message=’ + Memo6.Text);//el cuerpo en un memo

    parametros.Add(‘wysiwyg=’ + ‘0’);//otros parametros…..
    parametros.Add(‘taglist=’ + ”);

    ……..

    parametros es de tipo:
    parametros: TStringlist;

    y para el post utilizo el “idhttp” de las indy…
    todo bien, manda el post, pero en el texto no reconoce los saltos de linea y sale todo junto…

    ya probe con #10, #13, [br], /n , etc
    probe (en el area del foro donde se publica los temas usa ‘bbcode’..) pero no me da el salto de linea.. todo junto sale

    en un archivo de texto que guarda un programa posteador vi que separa las lineas con un simbolo que es un cuadrito pequeno vacio, que es el salto de linea, si lo copio y lo pego digamos aqui en este texto, no pega el cuadrito sino que salta de linea (al hacer ctrl V).
    creo que es ese simbolo que necesito insertar en el tmemo en cada linea antes de enviar como parametro al foro, pero no se como…. pense que era el #13 pero como dije no da.. sabes algo de eso?

  5. Neftalí
    viernes, 11 de febrero de 2011 a las 09:58 | #5

    @fernandox
    Hola fernando; Pues posíblemente sea el #13 (que es el único carácter de salto de línea), aunque codificado de otra manera. Incluso he visto componentes web que poseen su propia codificación (por ejemplo 2 espacios seguidos significan un salto de línea).

    Sería cuestión de probar qué código se está guardando cuando escribes.

  6. sábado, 1 de agosto de 2015 a las 08:15 | #6

    Genial como siempre neftali. Funciona a la perfección.

  1. Sin trackbacks aún.
What is 26 + 16 ?
Please leave these two fields as-is:
IMPORTANTE! Para continuar, debes contestar la pregunta anterior (para evitar SPAM) :-)