PDA

Ver la Versión Completa : capturar comandos de salto de carro


Carlos Arevalo
20-10-2006, 20:41:29
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...


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


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