FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas linea RichEdit
Buenos días a tod@s,
Me he encontrado con el siguiente problema: Tengo dos RichEdits y quiero copiar parte del contenido de RichEdit1 a RichEdit2, y no sé cómo encontrar los límites del texto a copiar cuando sólo conozco una palabra que hay en las lineas. En el código siguiente consigo copiar el trozo de texto que quiero, pero me obliga a poner todo el contenido de unas lineas frontera: -------------------------------------------------------------- //cargo el contenido de un fichero al RichEdit1 RichEdit1.Lines.LoadFromFile(sFile); //Busco las posiciones de los limites del texto a copiar Pos1:=RichEdit1.Lines.IndexOf('--Limite star'); Pos2:=RichEdit1.Lines.IndexOf('--Limite end'); //copio una parte de RichEdit1 a RichEdit2 for i:=Pos1 to Pos2 do RichEdit2.Lines.Add(RichEdit1.Lines.Strings[i]); --------------------------------------------------------------------- Si pongo Pos1:=RichEdit1.Lines.IndexOf('star'); no me encuentra la posición de la linea. ¿Saben alguna manera de que pueda encontrar el número de linea sabiendo sólo uno de los strings que forman dicha linea? Gracias por adelantado y que tengan un buen día. María |
#2
|
||||
|
||||
Para usar IndexOf, la línea debe contener ese texto al inicio de la línea y no dentro.
Lo que si puedes usar es la función Pos en el texto al completo del RichEdit: Si dentro del texto se encuentra una palabra como "estar" te dará un falso positivo . Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
ok. Gracias Lepe.
Y si en lugar de copiar el texto entre la posición 1 y donde está 'star', quiero copiar el texto de la linea donde se encuentra 'star'? Escribo el código: Código Delphi [-] //Busco la palabra 'architecture' dentro del texto, es la palabra donde empieza la linea que quiero copiar: Pos1:=Pos('architecture',RichEditEntity.Lines.Text); ToEnd:=length(RichEditEntity.Text); // Busco la palabra 'is' que la ultima palabra de la linea Pos12:=RichEditEntity.FindText('is',1,ToEnd,[],); while (Pos12 < Pos1) do begin Pos12:=RichEditEntity.FindText('is',Pos12+1,ToEnd,[],); //copio en s el texto de la linea s := Copy(RichEditEntity.Text, Pos1, Pos12); //Pos guarda la posición de la linea dentro del texto Pos:=RichEditEntity.Lines.IndexOf(s); Problema: s := Copy(RichEditEntity.Text, Pos1, Pos12); en s se copia un texto más extenso que la linea!!!! Alguien ve dónde está el error??? Gracias por adelantado |
#4
|
|||
|
|||
Ya lo he resuelto. Me acabo de dar cuenta del detalle.
es: s := Copy(RichEditEntity.Text, Pos1, Pos12-Pos1); en lugar de: s := Copy(RichEditEntity.Text, Pos1, Pos12); Saludos y que tengan un buen día. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
RichEdit, salto de linea | chrids506 | OOP | 3 | 12-07-2006 17:42:41 |
irme a una línea en un richEdit | aranel | OOP | 1 | 28-11-2005 08:48:12 |
añardir texto en una linea de richedit | aranel | OOP | 2 | 24-11-2005 13:19:15 |
Traza linea por linea problemas | zugazua2001 | Varios | 2 | 24-10-2005 08:16:32 |
Posición del primer caracter de linea en un RichEdit | SCH | Varios | 0 | 22-09-2003 20:51:32 |
|