Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al eliminar cadena de Richedit (https://www.clubdelphi.com/foros/showthread.php?t=73330)

ZayDun 15-04-2011 00:17:35

Problemas al eliminar cadena de Richedit
 
hola me estoy haciendo un gran lio con un Richedit, el richedit carga un documento que tiene como valor algo similar a esto:

DATOS A
[CONTENIDOA DATOS A]
DATOS B
[CONTENIDOB DATOS B]

el contenido de datos B es bastante amplio, por lo que tampoco pense que iba a ser ningun problema y aplique dicho codigo..

Código Delphi [-]
Delete(Datos,Pos('CONTENIDOB',Datos),Pos(']',Datos));


el problema es que el resultado que da viene a ser a algo asi.

DATOS A
[CONTENIDOA DATOS A]
DATOS B
[T
OS B]

me elimina solo parte del texto y da un salto de linea, pero si antes de ejecutar ese codigo elimino los saltos de linea me da el resultado que yo quiero pero un tanto desordenado al haber eliminado los saltos de linea.

DATOS A[CONTENIDOA DATOS A]DATOS B []


¿Alguna idea?

oscarac 15-04-2011 00:19:48

puedes colocar algo de codigo?

ZayDun 15-04-2011 00:29:41

Contenido de Richedit
#Control0#
(00000222201020...)
#Control1#
(95DVDS48654651651654B6584..)
#Control2#
(9951654B633..)

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
Datos:String;
begin
Datos:=Richedit1.Lines.Text;
//
If Pos ('Control1',Datos)>0 Then
Begin
Delete(Datos,Pos('Control1',Datos),Pos(')',Datos));
Memo1.Lines.Add(Datos);
End;

oscarac 15-04-2011 00:38:37

y que resultado obtienes?

ecfisa 15-04-2011 00:39:29

Hola ZayDun.

Cita:

Contenido de Richedit
#Control0#
(00000222201020...)
#Control1#
(95DVDS48654651651654B6584..)
#Control2#
(9951654B633..)
¿ Que resultado esperas, es decir que querés que se borre del texto de arriba luego de la ejecución del código?

Un saludo.

ZayDun 15-04-2011 00:42:05

el resultado que obtengo es que se queda a mitad de la cadena y lo que quiero es eliminar la cadena completa y que deje como resultado esto.


Contenido de Richedit

#Control0#
(00000222201020...)
#Control1#
()
#Control2#
(9951654B633..)

oscarac 15-04-2011 00:45:57

la cadena completa empieza en
#control0# y termina en (9951654B633..) ?

grafica mejor como quieres que quede la linea

Ejemplo
[quote]
#control0#
#control1#
#control2#
/QUOTE]

o
Cita:

(00000222201020...)
(95DVDS48654651651654B6584..)
(9951654B633..)

ecfisa 15-04-2011 00:52:37

Hola ZayDun

Como te dije antes y también te ha dicho oscarac, ya sabemos como te queda. Quisieramos saber como queres que te quede...

Por favor poné un ejemplo de antes y después.

Un saludo.

ZayDun 15-04-2011 00:53:18

no puedo mostrarte tal y como es por que la longitud de los datos es muy amplia.

Contenido de Richedit al cargar el documento


Cita:

#Control0#
(123456789etc...)
#Control1#
(abcdefghijketc..)
#Control2#
(951654B633etc..)

Contenido de Richedit al ejecutar el codigo


Cita:

#Control0#
(123456789etc...)
#Control1#
h
ijketc..)
#Control2#
(951654B633etc..)
como veras elimina desde el inicio de lo que se le dice al codigo pero no hasta el final que deberia de ser ")"

el resultado correcto que yo quiero es..

Cita:

#Control0#
(123456789etc...)
#Control1#
#Control2#
(951654B633etc..)

oscarac 15-04-2011 00:57:39

entonces entendemos que quieres borrar lo que esta despues de
#control1# y antes de #control2#

ecfisa 15-04-2011 00:58:55

Hola de nuevo.

Probá de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Datos: string;
  ini, fin: Integer;
begin
  Datos:= RichEdit1.Text;
  ini:= Pos('#Control1#',Datos) + Length('#Control1#') + 1;
  fin:= Pos('#Control2#',Datos);
  Delete(Datos, ini, fin-ini);
  RichEdit1.Text:= Datos;
end;

Un saludo.

ZayDun 15-04-2011 01:00:53

gracias ecfisa por el codigo, voy a testearlo, y perdonar que no me he explicado muy bien, un saludo.

oscarac 15-04-2011 01:01:46

te piongo un ejemplo del delete
al pareces no esta tomando muy bien el hasta donde borrar
Código Delphi [-]
 
var
  Source : string;

begin
  Source := '12345678';
  Delete(Source, 3, 4);  && Borrar 4 caracteres a partir del tercero
  ShowMessage('Source now : '+Source);
end;
Muestra 1278

ZayDun 15-04-2011 01:05:30

gracias a ti tb oscarac en cuanto pueda posteo el resultado y gracias de nuevo a los 2.


La franja horaria es GMT +2. Ahora son las 00:18:42.

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