Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #10  
Antiguo 20-07-2010
jusaso jusaso is offline
Registrado
 
Registrado: dic 2008
Posts: 5
Poder: 0
jusaso Va por buen camino
Saludos compañeros

He vuelto a mi planteamiento inicial y parece que ya funciona. Esperemos...

La idea era la siguiente:
Leer el fichero RTF, seleccionar la información referente a uno de los productos y mostrar esta información en el RichEdit.

Pero se perdía el formato del texto.
¿Porqué?
Porque las líneas extraidas necesitan de la información del encabezado del fichero RTF. Lo puedes comprobar cargando el fichero en el IDE de Delphi.

Por lo tanto la tarea consiste en localizar estas líneas y pasarlas al RicheEdit junto con las seleccionadas.

¿Cuales son estas líneas?
Me ha parecido comprobar que el tamaño de las mismaas varía de un RTF a otro.
Así que he utilizado el siguiente truco...
Al principio del fichero RTF pongo una señal: INIFILE.
Las líneas que estén por encima (unas 40) serán la cabecera.

Y las líneas comprendidas entre cada número de producto serán la descripción del mismo.

¡IMPORTANTE!
Conviene dejar una línea en blanco por encima y debajo de cada señal, al redactar el texto en Word. Simplemente por precaución....

Bueno os pongo el código...

Código Delphi [-]
 
procedure TForm1.Button1Click(Sender: TObject);
var
  nfin,nIni: integer;
  nIniFile,i : integer;
  FichRTF,mislineas : TStringList;
begin
  FichRTF:=TStringList.Create;
  mislineas:=TStringList.Create;
  FichRTF.LoadFromFile('TEXT.RTF');
 
  nIniFile:=0;  //fin de la cabecera
  nIni:=0;       //línea comienzo selección
  nFin:=0;      // fin selección
      //localiza las 3 líneas
  for i:=0 to FichRTF.Count-1-1 do
    begin
    if AnsiPos('INIFILE', FichRTF[i])>0 then nIniFile := i;
    if AnsiPos('12345', FichRTF[i])>0 then nIni := i;
    if AnsiPos('12346', FichRTF[i])>0 then begin nFin := i;break;end;
    end;
 
  if (nIniFile=0)or(nIni=0)or(nFin=0) then showmessage ('Problema');
 
       //seleccionamos las líneas de la cabecera
  for i:=0 to nIniFile-1 do
       mislineas.add(FichRTF.Strings[i]);

       //Y la parte del texto comprendido entre 12345 y 12346
  for i:=nIni+1 to nFin-1 do
       mislineas.add(FichRTF.Strings[i]);
 
       //Finalmente pasamos las líneas de texto al RichEdit
  RichEdit1.Text:=mislineas.Text;

end;


Esto es todo.
Seguramente se me escapa algo...

En respuesta al compañero rrf... Pienso que el delete, una a una, de las líneas tiene que ser algo lento si el texto es abundante...

Gracias...
Responder Con Cita
 



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
synedit como comentar codigo con Ctrl + } JXJ Varios 3 08-03-2010 02:35:38
Hacer Scrol en un RichEdit para abajo fide_uci Varios 2 18-11-2009 17:00:45
Mirar por favor este query y comentar... El_Raso Firebird e Interbase 33 18-11-2008 12:53:44
Jefe de producto de servidores!!!! (para Madrid) jcuesta Varios 1 17-12-2006 18:31:06
Parte de un RichEdit a otro RichEdit (donde esté el cursor) Tomy Varios 3 21-12-2005 21:08:15


La franja horaria es GMT +2. Ahora son las 02:19:27.


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