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
IniSelect := RichEdit1.Perform(EM_LINEFROMCHAR,RichEdit1.SelStart,0);
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