Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2007
mazuada mazuada is offline
Miembro
 
Registrado: ene 2006
Posts: 12
Poder: 0
mazuada Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 01-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 02-03-2007
mazuada mazuada is offline
Miembro
 
Registrado: ene 2006
Posts: 12
Poder: 0
mazuada Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 02-03-2007
mazuada mazuada is offline
Miembro
 
Registrado: ene 2006
Posts: 12
Poder: 0
mazuada Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 18:02:44.


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
Copyright 1996-2007 Club Delphi