Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   capturar comandos de salto de carro (https://www.clubdelphi.com/foros/showthread.php?t=36706)

Carlos Arevalo 20-10-2006 20:41:29

capturar comandos de salto de carro
 
Estoy tratando de capturar una cadena de caracteres desde una variable tipo string pero con los comandos de salto de carro.

Ejemplo:
Cuando pongo un break en la line de codigo donde cargo el string para ver que es lo que trae se muestra de esta manera STR=#$D#$A'n1'#$D#$A pero cuando lo paso al tedit me muestra n1 y hace el salto de carro.

Ahora hay manera de capturar toda la cadena incluyendo los comandos de salto de carro para que en el tedit me muestre '#$D#$An1#$D#$A'.

Gracias.

Enan0 20-10-2006 21:07:29

Hola ese codigo corresponde al #13#10 Salto y retorno. lo que podrias hacer es..
Buscar en el string si vienen dichos caracteres y remplazarlos por el string '#$D#$A'
No se si es la major solucion, pero te funcionaria.
y para quitarlos solamente con hacer un TRIM de la cadena Estarias quitandolos.

Creo que seria mejor un TrimLeft y luego un TRImRigth o a la inversa

saludos

Carlos Arevalo 21-10-2006 01:04:36

Si tienes razon pero yo lo que quiero es capturar toda la cadena incluyendo los comandos de salto de carro para que en el tedit me muestre '#$D#$An1#$D#$A' y no esto 'n1'.

Enan0 21-10-2006 01:33:02

Bueno solo era usar un poco la inmaginacion pero aca esta el codigo.
no se si es el mejor pero que funciona Funciona,
Igualmente podes hacerle cualquier modificacion.

solo puse dos MEMOS.. MEmo1 y memo2 y un boton.
en el evento onClick va esto...

Código Delphi [-]
Const
   enter='#$D#$A';
var s,aux:string;
   I,x:integer;
begin
i:=0;
x:=0;
s:='';
aux:=Memo1.Text;
x:=pos(#13#10,aux);
while (x>0) and (I<>x) do begin
   i:=x;
   if x=1 then begin
      s:=enter;
      delete(aux,1,Length(#13#10));
   end else begin
      s:=s+copy(aux,1,x-1)+enter;
      delete(aux,1,x+Length(#13#10)-1);
   end;
   x:=pos(#13#10,aux);
end;
Memo2.Lines.Add(s);
end;


Editado unos minutos despues

Jejeje Bueno no anda Perfecto Dado un Caso, (entre el que se me ocurre) te puede llegar a cortar la cadena. asique eso te lo dejo para vos. como comentario para hacertelo mas facil, es una de las comparaciones.



Bue eran mas de uno y no pude con mi genioo aca esta el codigo bien :D

Código Delphi [-]
Const
   enter='#$D#$A';
var s,aux:string;
   I,x:integer;
begin
i:=0;
x:=0;
s:='';
aux:=Memo1.Text;
x:=pos(#13#10,aux);
while (x>0)  do begin
   i:=x;
   if x=1 then begin
      s:=s+enter;
      delete(aux,1,Length(#13#10));
   end else begin
      s:=s+copy(aux,1,x-1)+enter;
      delete(aux,1,x+Length(#13#10)-1);
   end;
   x:=pos(#13#10,aux);
end;
s:=s+aux;
Memo2.Lines.Add(s);
end;

Carlos Arevalo 21-10-2006 22:22:05

Primero que nada muchas gracias por tu ayuda y pido disculpas por no explicarme bien.

El string que estoy capturando puede llegar con cualquier tipo de comandos delante y atras.
Ejemplo:
fy))'k4'&TTT

Incluso puede variar el tamaño.
Ejemplo:
fy))'k44'&TTTTTT

Lo que quiero es poder capturar toda la cadena incluyendo los comandos de salto de carro etc. para que en el tedit me muestre '#$D#$An1#$D#$A' y no esto 'n1'. por ejemplo.


Muchas gracias y te pido disculpas de nuevo.

Enan0 23-10-2006 13:34:02

y bueno mira, Creo que la solucion seria agarrar ese codigo y mo dificarlo para cada caso.
Podrias hacerlo Poniendo con varios if. y sabrias que tipo de comando viene y su longitud. ahora creo que deberias modificar eso teque tenes ahi a tu gusto y placer.

saludos


La franja horaria es GMT +2. Ahora son las 17:08:13.

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