Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿como hacer que un string tenga retornos de carro saltos de linea? (https://www.clubdelphi.com/foros/showthread.php?t=70619)

JXJ 01-11-2010 07:39:45

¿como hacer que un string tenga retornos de carro saltos de linea?
 
hola

tengo un problema quiero dar formato a un string que me devuelve una query

tengo esto asi.

Código Delphi [-]
select cadenalarga from tabla_sucesos
 
execsql;
 
 for i := 0 to Query1.RecordCount - 1 do
            begin
      cadenalarga := Query1.Fields[0].AsString;
             end
 
memo1.lines.add(cadenalarga );

pero la cadena es demasiado larga
como esto

cadena ubien larga odnsaodinasocnascosanco ncosndcccadena ubien largaodnsaodinasocnascosancocosndcccadenaubienargadnsaodinasocnascosanco ncosndcccadena ubien larga odnsaodinasocnascosanco ncosndcc

hay forma de que se limite digamos aun ancho de 20 caracteres
y luego mostrarla en el memo


asi

cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas

rrf 01-11-2010 09:36:15

Tienes que buscar la aparición de un espacio en blanco desde el caracter que ocupa el lugar 20 (que es el máximo que tú comentas), hacia atrás.

Cuando aparezca, lo reemplazas con ' '+#13+#10.

Con ello ya tienes el retorno de carro en medio de la cadena. Y sigues haciéndolo hasta que se acaba la cadena de texto.

Luego:

Memo1.lines.text := cadena_de_texto_modificada ;


Otra forma, y creo que más sencilla, es buscar un espacio en blanco desde el límite (20 en tu caso) hacia atrás y, cuando lo encuentres, lo añades como línea al Memo.

Luego sigues realizando ese proceso desde ese punto de la cadena de texto en adelante.

Espero que te sirva.

Saludos.

ecfisa 01-11-2010 09:48:32

Hola JXJ.

¿ No te sería más fácil poner en True la propiedad WordWrap del Memo ?


Saludos. :)

JXJ 02-11-2010 17:49:32

Cita:

Empezado por ecfisa (Mensaje 381014)
Hola JXJ.

¿ No te sería más fácil poner en True la propiedad WordWrap del Memo ?


Saludos. :)

no por que el memo tiene que tener cierta informacion
en este formato


Código:

encabezado
titulo
caracteristicas blablabalbalablabalbalablabalba
 
 
cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas

 
nuevas mejoras. incrustadas en el formato y mas blablabala
 
cadena ubien larga o
dnsaodinasocnascos
anco ncosndcccdas


rrf 02-11-2010 18:47:36

Aunque no se ajuste a tu problema, la solución planteada por Ecfisa me pareció muy buena... y sencilla.

Hice una prueba y creo que este ejemplo resuelve lo que preguntas:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  aa : string ;
  cc : integer ;
begin

  Memo1.Lines.Clear ;
  aa := 'Casi nadie le creyó a Casandra, cuando advirtió los peligros que encerraba '+
        'ese caballo gigante de madera en las puertas de Troya para el futuro de su '+
        'civilización. El final de aquella historia -La Ilíada- es conocido. Muchos menos '+
        'hicieron caso a las alertas desesperadas del profesor y catedrático catalán '+
        'Santiago Niño-Becerra, cuando escribía hace 5 años en Internet o en algún '+
        'periódico, que la suerte de este sistema tal y como estaba pautada, también '+
        'estaba escrita. "Alarmista" y "futurólogo" fueron algunos de los motes que se '+
        'granjeó en la comunidad académica cuando decidió darle forma de libro a sus '+
        'intervenciones, con el sugerente y poco feliz título de "El crash de 2010".' ;

   while length ( aa ) > 20
   do
     for cc := 20 downto 0
     do
       if aa [cc] = ' '
       then
         begin
           Memo1.Lines.Add( copy ( aa, 1, cc ) ) ;
           aa := copy ( aa, cc +1, length (aa) ) ;
           break ;
         end;

end;

Espero que te sirva.

Saludos.

ecfisa 02-11-2010 19:44:54

Hola rrf.

Tu código le va a servir sin dudas. ;)

Saludos. :)


La franja horaria es GMT +2. Ahora son las 01:50:16.

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