Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
He aquí mi primer problema, no creo que esa solución sea elegante, tener un TRishEdit oculto para esas cosas, y luego que la búsqueda la hago en todo el documento incluyendo etiquetas y todo lo cual no resulta muy preciso a la hora de buscar, por lo que me gustaría saber si existe algún componente que parseara el htm (recuerden que es exportado por word) y me devuelva solo el texto para hacer la búsqueda en esa cadena.
Existen funciones o librerías que pueden echarte una mano: seguro. Yo usaba en cierto programa la siguiente función, aunque, reconozco que ahora mismo comenzaría buscando alguna otra cosa, no por nada, sino, porque, hace ya unos cuantos años del programa en cuestión. Tal vez incluso me parara un poco a ver:

Código Delphi [-]
function Html2Text(html : string) : string;
var
  t : TStringList;
  s, texto : string;
  i, n : Integer;
  estexto : Boolean;
begin
  t := TStringList.Create;
  try
    t.LoadFromFile(html);
    s := t.Text;
    i := 0;
    esTexto := false;
    texto := '';
    for n := 1 to Length(s) do begin
      if i > 0 then
        Dec(i)
      else
      begin
        //  
        if (s[n] = '&') and
          (Uppercase(s[n + 1]) = 'N') and
          (Uppercase(s[n + 2]) = 'B') and
          (Uppercase(s[n + 3]) = 'S') and
          (Uppercase(s[n + 4]) = 'P') and
          (Uppercase(s[n + 5]) = ';') then
        begin
          i:= 5;
          // Espacio
          texto:= texto + ' ';
        end
        else
           // "
           if (s[n] = '&') and
            (Uppercase(s[n + 1]) = 'Q') and
            (Uppercase(s[n + 2]) = 'U') and
            (Uppercase(s[n + 3]) = 'O') and
            (Uppercase(s[n + 4]) = 'T') and
            (Uppercase(s[n + 5]) = ';') then
          begin
            i:= 5;
            // Comillas
            texto:= texto + '"';
          end
          else
            if esTexto and (s[n] <> '<') then
              texto:= texto + s[n];
        if s[n] = '<' then
        begin
          esTexto:= false;
          // 
if (Uppercase(s[n + 1]) = 'B') and (Uppercase(s[n + 2]) = 'R') and (Uppercase(s[n + 3]) = '>') then // Salto de línea texto:= texto + #10; end; if s[n] = '>' then esTexto:= true; end; // if i > 0 then end; // for n := 1 to s := ''; s := texto; texto := ''; i := 0; // Eliminar las líneas en blanco for n := 1 to Length(s) do begin if i > 0 then Dec(i) else begin if (s[n] = #13) and (s[n + 1] = #10) and (s[n + 2] = #13) and (s[n + 3] = #10) then i := 1 else texto := texto + s[n]; end; end; // for n := 1 t.Text := texto; Result := t.Text; finally t.Free; end; end;

Lamento de veras no poder decir de dónde salió la función que copio, puesto que, una cosa es segura: yo no la escribí. Pero, a lo que iba, que era, comentarte que acaso no te interese el paso intermedio de convertir HTML a texto. ¿Por qué? Pues... porque no veo a nadie buscando cosas como "HTML", o "IMG", en fin, etiquetas HTML. Yo creo que el paso de HTML a texto puedes ahorrártelo, o, en principio, es lo que me parece. Pero, ya ves que existen soluciones para todo, bueno, por lo menos, para esto.

Por otro lado, y, sabiendo (aunque no sé) que desde Delphi puede trabajarse con Word... ¿por qué no hacerlo con este, directamente? O tal vez sea cuestión de que Word no va a estar disponible en todas las máquinas o algo así... sobre esto no me hagas mucho caso, la verdad. Yo me refería a mostrar Word (o el "Server" oportuno) em el formulario, y aprovecharse de las características de búsqueda conque cuente este, que digo yo que contará con ellas, vamos.

Cita:
Además después que encuentro los documentos me gustaría que al seleccionar uno aparezca las coincidencias con la cadena de búsqueda en otro formato, lo primer que se me ocurrió fue abrir con mi richedit oculto la página seleccionada y guardarla en una carpeta temporal después de haber remplazado las coincidencias con la cadena de búsqueda por ella misma pero formateada, pero esto no funciona, por algún motivo cuando voy a mostrar el documento resultante se muestran códigos raros y texto basura.
Porque estás tratando con "caracteres extraños", del formato de Word, o del propio formato HTML. Y sobre esto hay que prestar más atención. Personalmente, hace poco, traté de llevar a cabo en un programa un buscador "parecido" sobre HTML, de modo que tenía que utilizar una expresión regular (que no salió de mi cabeza) para evitar reemplazar, o hacerlo con cierto cuidado, el texto contenido entre etiquetas HTML, porque, de no hacerlo así, "rompía" dichas etiquetas, y con ello el documento HTML en cuestión.

No sé. Acaso no sería mala idea convertir el HTML a texto... y guardar el texto en una base de datos, que pudiera consultarse más o menos sencillamente, aunque, ahora que lo pienso, esto podría atacar la primera cuestión que planteas, pero, no esta segunda.
Pienso en que el Embedded WebBrowser cuente (¿Lo he soñado acaso? ¿Es que es lo que quiero recordar?) con algún método que te facilite el asunto. Si Internet Explorer puede buscar en documentos y "subrayar" lo que se busca en los mismos... tal vez tú puedas usar lo que Internet Explorer ofrezca al respecto. O sea, investigar el componente Embedded WebBrowser, aunque, qué tonterías digo, seguro que esto ya lo has hecho o estás haciéndolo...

En fin. Como veo que me estoy alargando y en realidad no aporto ninguna solución clara, lo dejo aquí, por el momento. Y lamento no poderte decir otra cosa...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 06-12-2007
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 23
yusnerqui Va por buen camino
Y es lo que siempre digo, el que persevera triunfa, te agradezco infinitamente dec por tomarte el trabajo de leer mis post, y además, por aportarme tus puntos de vista.

Ahora voy a analizar cada una de las ideas que me das para ver que extraigo de ellas

Cita:
Empezado por dec
En fin. Como veo que me estoy alargando y en realidad no aporto ninguna solución clara


Todo lo contrario, todas las ideas se agradecen, porque dos cabezas piensan más que una, y un foros de cabezas con alto nivel de preparación como las de los participantes de éste lugar, pues genera ideas maravillosas.


Reitero mi agradecimiento.

Saludos Yusnerqui
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #3  
Antiguo 06-12-2007
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 23
yusnerqui Va por buen camino
Cita:
Empezado por dec
Pienso en que el Embedded WebBrowser cuente (¿Lo he soñado acaso? ¿Es que es lo que quiero recordar?) con algún método que te facilite el asunto.
Cuanta razón llebavas, mira lo que encontré.

Gracias hermano.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #4  
Antiguo 06-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno... la cosa es que me sonaba de algo... Pero ya queda del todo claro. Gracias a ti.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
parsear xml + clase DOMParser gustavoh JAVA 0 27-07-2006 15:39:25
Busqueda de archivos jdattoli OOP 1 26-08-2005 19:44:24
Busqueda de Archivos jorgito PHP 7 03-08-2005 18:50:04
Busqueda de archivos Nathan Varios 1 17-03-2004 17:27:38
busqueda en una cadena Irina SQL 2 20-06-2003 11:09:40


La franja horaria es GMT +2. Ahora son las 13:54:55.


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