![]() |
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 |
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 |
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 |
Ya lo he resuelto. Me acabo de dar cuenta del detalle. :D
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. |
| La franja horaria es GMT +2. Ahora son las 15:32:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi