![]() |
Parsear archivos htm de word y resaltar cadena de búsqueda
Saludos Amigos, hoy vengo a molestarlos con un par de dudas, aunque a la verdad tengo muchas, pero vamos a las que nos ocupa:
Para comenzar diré que estoy trabajando con delphi 7 y componentes Embedded Web Browser, específicamente uso el TEmbeddedWB En el departamento donde trabajo cada cierto tiempo mandan un conjunto de resoluciones en formato word, esas resoluciones deben ser consultadas después muy a menudo para tomar decisiones, es decir que funcionan como una biblioteca de consulta, el caso es que hasta ahora, solo tienen una carpeta con todas esas resoluciones ligadas, y cuando quieren buscar algo en específico pasan el trabajo del indio, y a medida que ha ido “engordando” la carpeta más trabajo pasa el indio. Es posible que hallan soluciones como google destop entre otras, pero esta carpeta debe ser movida constantemente en una memoria y consultada en diferentes máquinas por lo que un programa instalable no es lo más práctico en este caso. He decidido implementar una pequeña aplicación que gestione estos documentos, y en medio de mi ignorancia lo que se me ha ocurrido es importar todas esas resoluciones a formato htm usando la función que word nos proporciona para estos fines, claro que este proceso es automatizado desde el delphi, luego muestro todos los nombres en un treeview y el contenido de la selección en el mencionado TEmbeddedWB. Pero esto no es suficiente, estoy implementando también un buscador, que cuando el usuario introduzca una cadena de búsqueda salgan solo las resoluciones que contienen dicha cadena, para esto lo primero que se me ha ocurrido es ir abriendo uno a uno los documentos en un TrishEdit que tengo oculto y haciendo un pos de la cadena a buscar, si está lo agrego, si no pues nada. 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. 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. Entonces mi segunda duda sería, de que forma puedo resaltar en los documentos encontrados la cadena de búsqueda en un TEmbeddedWB. Se que el cuento es un poco largo, pero quise que tuvieran claridad de mi problema, o tal ves los enredé más, el caso es que cualquier consejo o propuesta será bienvenida. Agradeciendo el haber leído mi post los saluda Yusnerqui |
1 Archivos Adjunto(s)
Hola, pues teniendo en cuenta que nadie se anima, voy a intentar subir lo que tengo hecho hasta ahora para ver si alguien le quiere hechar un ojo al código.
No está todo lo limpio y comentariado que quisiera pero está funcionando, y estoy aquí para cualquier duda que surja. Me falta poner una pequeña ayuda, pero después del mensaje anterior no será difícil intuir lo que hace, recuerden que uso los componentes TEmbeddedWB. Una ves más muchas gracias |
Tan mal está.:(
Caballero nadie se digna a(cómo decimos en cuba) tirarme un cabo:D Ya leí un tutorial que se relaciona con lo que quiero, se trata de Programa tu propio google, me parece muy inrteresante lo que en él se trata, pero como dice un amigo, eso lo pondré a prueba en una refacturación del soft:p, por ahora sigo investigando la forma de optimizar lo que ya está hecho.:confused: Sigo con la esperanza de que alguien se anime, si no a resolver alguna de mis dos dudas(Perdón guía de estilos), o hacer algún comentario sobre el soft. Bueno no doy más lata, Reitero mi agradecimiento por leer mis post. Saludos Yusnerqui;) |
No quiero parecer pesado, pero.... Nadie me va a hacer caso? :)
ok, yo seguiré investigando y si consigo algo lo publico, por lo pronto tengo que pasar a otra aplicación que debo terminar antes de fin de año, ya está en sus postrimerías pero tube que detenerma para hacer el bendito buscador porque urgía su utilización. Saludos y gracias a todos :) |
Hola,
Cita:
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:
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... |
Y es lo que siempre digo, el que persevera triunfa:D, 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:
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.:confused::confused::confused::confused::D Reitero mi agradecimiento. Saludos Yusnerqui:) |
Cita:
Gracias hermano. |
Hola,
Bueno... la cosa es que me sonaba de algo... Pero ya queda del todo claro. Gracias a ti. :) |
La franja horaria es GMT +2. Ahora son las 21:08:56. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi