Page 1 of 2
APORTE ( Busqueda en Archivos )
Posted: Thu Mar 31, 2016 8:57 pm
by cuatecatl82
Saludos a todos:
Estaba buscando en el foro alguna rutina que me permitiera hacer busquebas de texto en archivos, para un editor que estoy realizando y encontre esto que me gusto mucho y que quise compartirselos:
http://forums.fivetechsupport.com/viewt ... lit=ts.exe
En base al mismo código de
Paco García me di a la tarea de revisar y corregir algunos detalles que faltaban, probe que realizara búsquedas recursivas pero no funcionaba, le agregue iconos en la lista de coincidencias, funciona al 95% lo unico que falla es que al hacer busquedas al estilo "Todos los archivos (*.*)" muestra resultados correctos con texto que no tiene que ver con lo que se esta buscando.. Si alguien puede mejorarlo sería genial..
http://www.mediafire.com/download/danbo ... squeda.rar
Saludos y ojala les sirva..
Re: APORTE ( Busqueda en Archivos )
Posted: Thu Mar 31, 2016 9:14 pm
by Antonio Linares
Victor,
Muchas gracias
buen trabajo!
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 1:47 am
by cuatecatl82
Gracias Maestro:
Pero realmente el trabajo y el merito es de Paco Garcia, yo solo pulí algunas cosas.
http://www.mediafire.com/download/eawqn ... Search.rar
Nueva revision, corregi el fallo al hacer doble click en la linea de búsqueda, no mostraba los datos para ubicar el resultado.
En mi caso dentro de mi Editor al hacer doble click en la linea resaltada abre el archivo oEditor:Abrir(cFile) y lo posiciono al renglon indicado oEditor:GoTo(nLine)
saludos...
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 11:26 am
by cnavarro
Victor, es posible que en estas lineas haya un pequeño bug?
Te pongo como debería ser, quizás
Code: Select all
REDEFINE COMBOBOX oCbxRutas VAR cRutas ID 202 ITEMS aCbxRutas OF oDlg
REDEFINE COMBOBOX oCbxTipos VAR cTipos ID 203 ITEMS aCbxTipos OF oDlg
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 12:47 pm
by cnavarro
También se podrían añadir más extensiones de archivos de búsqueda
Code: Select all
FUNCTION BuscaFile()
local oDlg
local oCur
local oIco
local oBtn0
local oBtn1
local oBtn2
local cDir
local oCbxFind
local aCbxFind := {}
local oCbxTipos
local aCbxTipos := { "*.*", "*.prg", "*.ch", "*.h", "*.c", "*.cpp", "*.rc" }
local oCbxRutas
local aCbxRutas := {}
local oChkMay
local lMay := .F.
local oChkRec
local lRec := .F.
local cTipos := aCbxTipos[ 1 ] //"*.*"
local cRutas := PadR( GetCurDir(), 255)
local cFind := PadR( Space( 60 ), 60 )
local lValid := .F.
lCancel:= .F.
DEFINE ICON oIco RESOURCE "00"
DEFINE CURSOR oCur RESOURCE "MANO"
DEFINE DIALOG oDlg RESOURCE "BUSCARA" TITLE "Buscar en Archivos..." ICON oIco
REDEFINE COMBOBOX oCbxFind VAR cFind ID 201 ITEMS aCbxFind OF oDlg
REDEFINE COMBOBOX oCbxRutas VAR cRutas ID 202 ITEMS aCbxRutas OF oDlg
REDEFINE COMBOBOX oCbxTipos VAR cTipos ID 203 ITEMS aCbxTipos OF oDlg
REDEFINE BTNBMP oBtn0 RESOURCE "BUSCFILE" ID 400 OF oDlg ;
ACTION ( Self, cDir := cGetDir("Seleccione Ruta: ", ALLTRIM( cRutas ) ),;
IF( !EMPTY( cDir ),;
(IF(!oCbxRutas:FIND(cDir),oCbxRutas:Add( cDir ),),;
oCbxRutas:oGet:VarPut( cDir ), oCbxRutas:oGet:Refresh()),))
.../...
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 1:21 pm
by karinha
Victor,
Muchas gracias
buen trabajo!
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 3:48 pm
by cuatecatl82
Saludos Cristobal:
Victor, es posible que en estas lineas haya un pequeño bug?
Te pongo como debería ser, quizás
Cierto, los Items estaban cambiados, gracias por la observacíon.
También se podrían añadir más extensiones de archivos de búsqueda
Asi es, de hecho por lo que estuve analizando el código, Paco Garcia tenia la idea de poder guardar en un archivo .ini todas las busquedas, las extenciones y los directorios algo como:
Code: Select all
[BUSQUEDAS]
1=redefine
2=dialog
3=RESOURCE
4=oApp:
5=
[FOLDER]
1=C:\PRUEBAS
2=Z:\FWH\Samples
3=Z:\Harbour\Source
4=D:\
5=F:\Fivewin
[TIPOS]
1=.prg
2=.c
3=.ppo
4=*.*
5=*.txt
Igual se podria guardar en una .dbf, pero ya es cuestion de gustos, por eso lo deje libre tal cual esta en el código original..
Lo que todavia no encuentro es como hacer que en una búsqueda de tipo *.* respete la busqueda , ya que al ser una apertura y búsqueda en todos los archivos en general muestra resultados como éste:
}
dificilmente podriamos encontrar texto legible que coincida con la palabra a buscar, ando en eso..
karinha:
Ojala les pueda ser de ayuda..
Saludos a todos y seguire revisando para mejorarlo..
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 3:59 pm
by cnavarro
Qué cadena buscabas en la imagen que has puesto?
Re: APORTE ( Busqueda en Archivos )
Posted: Fri Apr 01, 2016 8:24 pm
by cuatecatl82
En el ejemplo anterior buscaba "redefine", pero sea lo que sea siempre hace lo mismo.
En este caso busque "copiar" en tipo de archivos "*.*"
y aqui lo mismo.. la rutin hace un barrido de los archivos en los que se hace la busqueda y sin más sale este tipo de "basura"
No doy porque..
Re: APORTE ( Busqueda en Archivos )
Posted: Mon Apr 04, 2016 10:55 pm
by JmGarcia
Ideal para una idea que tenían en mente. Me parece que no la voy a desarrollar ya que este "aporte" casi que me lo soluciona.
Me explico:
Una de las cosas que mas me fastidia a la hora de compilar es el famoso error "external procedure", es decir cuando no hemos enlazado la pertinente librería que tiene la función que nos falta.
Pues bien:
Mi idea era (digo era ya que este aporte "casi" me vale) hacer una utilidad que buscara binariamente la cadena de texto dentro de todos los ficheros LIB o DLL deseados. Una vez encontrada la función en que fichero esta pues a compilar enlazando el fichero LIB apropiado.
Entonces pido una mejora/modificación si ello es posible.
Como se ve en el mensaje anterior, cuando un archivo no es texto (exe lib dll etc...) sale después de cada fichero toda una ristra de líneas que no aportan nada ya que son ilegibles.
La idea es poder poner un CHEKBOX mas que pregunte algo así "Búsqueda binaria", "Búsqueda en ficheros binarios" o "Sólo enumerar ficheros" y entonces el programa en la ventana de resultados que solo saque los ficheros con su path y nada mas. En la utilidad de referencia TS.exe ( text find ) utility replacement tiene ese chekbox como "Exibir apenas os nomes dos arquios" (Mostrar sólo los nombres de archivo), esta es la idea.
La ventana de resultados podría tener la opción de seleccionar el texto para poderlo pegar en otro sitio.
Gracias anticipadas.
Re: APORTE ( Busqueda en Archivos )
Posted: Tue Apr 05, 2016 2:05 am
by cuatecatl82
Nueva version, ahora es posible guardar las palabras, las direcciones y los criterios de búsqueda en un archivo .ini, se ha incorporado la opcion de cancelar la búsqueda mostrando los resultados que se hallan encontrado, tambien he optimizado el código.
http://www.mediafire.com/download/eawqn ... Search.rar
Aún no puedo corregir el fallo de mostrar texto ilegible, estoy todavia por resolverlo pues el depuraqdor me saca con un error, espero encontrar la solución.
Saludos JmGarcia:
De hecho este fallo de mostrar texto Ascii es un bug que no he podido corregir, pues al usar el depurador me vota con un error y no puedo analizar porque muestra texto "basura"
El código es libre de modificaciones, lo puedes adaptar a tus necesidades..
Saludos.
Re: APORTE ( Busqueda en Archivos )
Posted: Tue Apr 05, 2016 8:30 am
by JmGarcia
Gracias Victor.
Cuando tenga tiempo le echaré "un vistazo".
Me puedes decir con que compilador y versión de fwh lo compilas.
Re: APORTE ( Busqueda en Archivos )
Posted: Tue Apr 05, 2016 2:35 pm
by cuatecatl82
debe compilar con cualquier version, todo el código fuente esta incluido, no require nada extra.
Yo tengo FWH 11.11, Harbour 3.2 y Bcc 582 sin problemas,
El código esta totalmente depurado, lo he revisado con W3, no hay variables sueltas que se cuelen en memoria. Compilalo y si te falta algo vemos como lo solucionamos.
Si le puedes dar una revisada a el bug, puede que en tu version de FW pueda verse desde el debug donde ocurre el fallo de la busqueda.
Saludos.
Re: APORTE ( Busqueda en Archivos )
Posted: Tue Apr 05, 2016 7:48 pm
by derpipu
Hola a todos, yo uso desde hace tiempo y por enseñanza de un viejo maestro en programacion, una herramienta del sistema y lo uso con un .bat donde el parametro es lo que buscamos,
Code: Select all
@echo off
del borrame.txt
find "%1" *.prg >> borrame.txt
notepad borrame.txt
@echo on
Espero les sirva de algo...
Saludos
Re: APORTE ( Busqueda en Archivos )
Posted: Thu Apr 07, 2016 5:41 pm
by ACC69
cuatecatl82 wrote:debe compilar con cualquier version, todo el código fuente esta incluido, no require nada extra.
Yo tengo FWH 11.11, Harbour 3.2 y Bcc 582 sin problemas,
El código esta totalmente depurado, lo he revisado con W3, no hay variables sueltas que se cuelen en memoria. Compilalo y si te falta algo vemos como lo solucionamos.
Si le puedes dar una revisada a el bug, puede que en tu version de FW pueda verse desde el debug donde ocurre el fallo de la busqueda.
Saludos.
Gracias Ing. Victor Daniel, buen aporte el error podria estar en ese codigo
ALLTRIM(STR(nFnd)) que desde principio no esta la variable nFnd, segun veo ,del porque te marca error.
Y por otro lado donde o como consigo el programa
W3 que mencionar para depurar variables sueltas.
Saludos y buen dia.
Atte: Adrian C. C.