Ver Mensaje Individual
  #5  
Antiguo 19-07-2010
jusaso jusaso is offline
Registrado
 
Registrado: dic 2008
Posts: 5
Reputación: 0
jusaso Va por buen camino
Gracias por sus respuestas.

El código quedaría pues...

Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
var
  nfin,nIni:integer;
begin
 richedit1.Lines.LoadFromFile('GradosBIEN.rtf');
 nIni:=0;
 nFin:=0;
 nIni := AnsiPos('12345', Richedit1.Text);
 nFin := AnsiPos('12346', Richedit1.Text);

 RichEdit1.SetFocus;
 Richedit1.SelStart := nFin;
 Richedit1.SelLength := Length(Richedit1.Text);
 BorrarSeleccion;

 Richedit1.SelStart := 0;
 Richedit1.SelLength := nIni;
 BorrarSeleccion;
end;

procedure TForm1.BorrarSeleccion;
var
 IniSelect, FinSelect,i : Integer;
begin
 //Inicio de la selección
 IniSelect := RichEdit1.Perform(EM_LINEFROMCHAR,RichEdit1.SelStart,0);
 //Fin de la selección
 FinSelect := RichEdit1.Perform(EM_LINEFROMCHAR,RichEdit1.SelStart + RichEdit1.SelLength,0);

 for i:=IniSelect to FinSelect do
  RichEdit1.Lines.Delete(IniSelect);
end;
Y ciertamente funciona.
Pero tiene un problema importante que habría que solucionar.
El documento Word, en su versión RTF, tiene unas cien páginas.
Y tarda varios segundos, bastantes, en cargarse sobre el RichEdit.

El problema se complica cuando esta operación debe repetirse para cada 'producto'.

Por ello, habría que guardar en memoria la totalidad del texto y mostrar en el RichEdit sólo las líneas referentes al artículo seleccionado.

He visto algunos ejemplos que utilizan TMemoryStream o TStringStream pero nunca he tenido que utilizarlos....

Si se os ocurre algo... os lo agradecería.

Un cordial saludo
Responder Con Cita