Creador: Yo
Version de GM utilizada: :GM8:
Descripcion:
Este es un script que realiza una b?squeda a partir del directorio inicial, pasando por todos los sub directorios para encontrar el archivo con los par?metros ingresados. En un vector, llamado por simple azar found, se almacenan los nombres de todos los archivos coincidentes, y en el vector founds los directorios de dichos archivos respectivamente. De manera que founds[1]+found[1] ser?a el archivo y su ruta completa
Buscar
/*
argument0=Directorio
argument1=Archivo
argument2=Identificador del primer directorio. No importa realmente. Se recomienda 1
Ejemplo: Buscar("C:\User\","dibujo",1)
*/
actdir=argument0
file=string_lower(argument1)
screen_redraw()
fil[argument2]=0
cfile=file_find_first(argument0+"\"+"*"+argument1+"*",0)
if string_pos(file,string_lower(cfile))<>0 {found+=1 founds[found]=cfile foundsd[found]=string_replace_all(argument0,"\\","\")}
while cfile<>""
{
cfile=file_find_next()
if string_pos(file,string_lower(cfile))<>0 {found+=1 founds[found]=cfile foundsd[found]=string_replace_all(argument0,"\\","\")}
}
cfile=file_find_first(argument0+"\*",fa_directory)
if cfile="."
{
cfile=file_find_next() fil[argument2]+=1
cfile=file_find_next() fil[argument2]+=1
}
ref[argument2]=cfile
if cfile<>"" and file_attributes(argument0+"\"+cfile,fa_directory)=1 {Buscar(string_replace_all(argument0+"\"+cfile+"\","\\","\"),argument1,argument2+1)}
cfile=ref[argument2]
while cfile<>""
{
cfile=file_find_first(argument0+"\*",fa_directory)
repeat (fil[argument2])
{
cfile=file_find_next()
}
cfile=file_find_next() fil[argument2]+=1
ref[argument2]=cfile
if file_attributes(argument0+"\"+cfile,fa_directory)=1 and cfile<>"" {Buscar(string_replace_all(argument0+"\"+cfile+"\","\\","\"),argument1,argument2+1)}
cfile=ref[argument2]
}
No s? bien por qu? lo hice, en alg?n lado le? que alguien pregunt? si se pod?a y cuando se lo negaron lo quise refutar XD
Adjunto en ejemplo sencillo. Tengo otro que indexa los archivos la primera vez q los busca y el resto de las veces no tarda nada
Espero que a alguno le sirva :) (Sobre todo al que pregunt? eso, sea quien sea XD)
Muy buen script texic funciona genial.
:)
Gracias ;D
muy intereaante, no lo revis? por dentro al script porque tampoco lo nesecito...
creo que en las carpetas del sistema y en temporales se traba.. debe ser por la cantidad de archivos..
a mi me va de maravilla. te molesta si lo uso en mi aplicacion Mega Player (http://k-games.co.cc/megaplayer) para hacer busquedas de listas de reproduccion ???
Para nada, es totalmente abierto, usalo y modificalo a tu conveniencia.
Ciberman, es cierto, en algunas carpetas tarda mucho mas, quizas se pueda mejorar un poco, no esta optimizado el codigo
Saludos makero amigo Texic:
Muy buena contribución. Hace ya "tiempo" venía con la idea de realizar algo parecido, pero siempre lo dejo para "después", "después" que nunca llega. :-[
Me lo llevo a casa y en algún "tiempo" lo reviso.
Gracias por liberarlo como código abierto. Desde ya te doy un diez. XD
En caso de que encuentre algún "bug" o le realice alguna modificación te aviso. ;D
Cita de: ferhand en Enero 30, 2013, 04:41:37 PM
Saludos makero amigo Texic:
Muy buena contribución. Hace ya "tiempo" venía con la idea de realizar algo parecido, pero siempre lo dejo para "después", "después" que nunca llega. :-[
Me lo llevo a casa y en algún "tiempo" lo reviso.
Gracias por liberarlo como código abierto. Desde ya te doy un diez. XD
En caso de que encuentre algún "bug" o le realice alguna modificación te aviso. ;D
Gracias, cualquier cosa me avisás y corrijo, saludos!
Me gusto el script pero hay alguna manera de hacer que por ejemplo si esta buscando algo y al medio de la búsqueda se cierra por error o algo y cuando lo vuelvas a iniciar se inicie de ahí mismo en vez de volver a empezar la búsqueda desde del principio?
Mh, si, de hecho si, pero tendrías que guardar los parámetros globales de la búsqueda (como los arrays que llena y el directorio de búsqueda actual). Entonces al reanudar la búsqueda hacés que el script saltee carpetas que sean alfabéticamente menores a las de la última rama buscada
Cita de: Texic en Enero 30, 2013, 11:00:35 PM
Mh, si, de hecho si, pero tendrías que guardar los parámetros globales de la búsqueda (como los arrays que llena y el directorio de búsqueda actual). Entonces al reanudar la búsqueda hacés que el script saltee carpetas que sean alfabéticamente menores a las de la última rama buscada
A mi se me ocurrio una manera que era cuando el juego se cierre en una ini guarde el ultimo lugar donde estuvo buscando pero me di cuenta de que eso no funcionaria porque solo buscara ESA ruta y no la ruta original.
Se podria utilizar este script para ver el contenido de una carpeta(los archivos que tiene(exe, zip, txt...) y carpetas)?Si la respuesta es si PUES COMO SE PODRÍA LOGRAR HACER LO?
La respuesta es sí, simplemente tendrías que pasar "*" o "" (no estoy seguro) como parámetro de búsqueda en el nombre del archivo y modificar el script para que guarde cada coincidencia encontrada en un array
Cita de: Texic en Febrero 27, 2013, 03:49:32 PM
La respuesta es sí, simplemente tendrías que pasar "*" o "" (no estoy seguro) como parámetro de búsqueda en el nombre del archivo y modificar el script para que guarde cada coincidencia encontrada en un array
Y como hago eso?
Em... Bueno dudo poder ser más claro que eso XD
Después te hago un script que haga lo que necesitás
Me parece muy bueno, para implementar un reproductor de musica.
Cita de: Texic en Febrero 28, 2013, 03:08:53 AM
Em... Bueno dudo poder ser más claro que eso XD
Después te hago un script que haga lo que necesitás
Bueno pues cuando puedas...
Listo el pollo, te los deja convenientemente metidos en un array (como el algoritmo original)
Cita de: Texic en Marzo 02, 2013, 08:21:10 PM
Listo el pollo, te los deja convenientemente metidos en un array (como el algoritmo original)
;D Gracias pollo es lo que buscaba