Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas linea RichEdit (https://www.clubdelphi.com/foros/showthread.php?t=40888)

mazuada 01-03-2007 11:04:16

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

Lepe 01-03-2007 13:46:30

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:
Código Delphi [-]
Pos1:=Pos('star',RichEdit1.Lines.Text); 
if Pos1 <> 0 then
// encontrado el texto
  s := Copy(RichEdit1.Lines.Text, 1, pos1 -1);
  // copiamos desde el inicio del texto hasta el inicio de 'star';
Si dentro del texto se encuentra una palabra como "estar" te dará un falso positivo :(.

Saludos

mazuada 02-03-2007 12:13:14

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

mazuada 02-03-2007 12:49:57

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