Bueno, pues necesito hacer una función que mire todas las carpetas que tengo en la carpeta "Songs" y me cree un archivo con todas las canciones ordenadas alfabéticamente.
El tema es que no se cómo contar cuantas carpetas hay, para hacer un for como dios manda. ¿Alguien ya ha hecho algo así antes?
Con un contador con cada archivo/directorio que encuentras...
http://wiki.bennugd.org/index.php?title=Glob
Creo que en el Thunder Blade del último concurso algo de eso hay, ficheros "filelist.inc" y "filelist.h", pero creo que no miran en subcarpetas. Eso sí, trae funciones para simplificarte la vida... si consigues entender cómo funcionan ^^U
Quote from: Rein (K´)ah Al-Ghul on July 19, 2011, 11:59:08 PM
Con un contador con cada archivo/directorio que encuentras...
http://wiki.bennugd.org/index.php?title=Glob
Tiene buena pinta, lo voy a mirar. Gracias.
Splinter recomienda: DIROPEN, DIRREAD, DIRCLOSE.
Al final, he hecho esto:
function carga_canciones()
private
int pf,i;
string canc,escritor,datos;
end
begin
pf=fopen("catalog.yaw",O_WRITE);
i=-2;
loop
canc=glob("songs/*");
if(canc!="")
if(canc!="." || canc!="..")
escritor="[Song="+i+"]";
fputs(pf,escritor);
/*datos=glob("songs/"+canc+"/*.mp3");
fputs(pf,datos);
datos=glob("songs/"+canc+"/*.avi");
fputs(pf,datos);
datos=glob("songs/"+canc+"/*.png");
fputs(pf,datos);*/
fputs(pf,canc);
escritor="[/Song="+i+"]";
fputs(pf,escritor);
end
else
break;
end
i++;
end
escritor="[/end]";
fputs(pf,escritor);
fclose(pf);
end
Veo algunos errores:
if(canc!="." || canc!="..")
Deberías usar un AND en lugar de OR, porque si te encuentra ".", como sí es distinto de ".." va a entrar en el IF.
Las funciones GLOB deberían tener cada una su propio bucle, ya que si cambias la cadena de búsqueda, esta se reinicia, y vas a obtener una y otra vez los primeros ficheros (si no recuerdo mal el funcionamiento).
interesante, listar canciones es algo que me interesa...
No, si me dí cuenta, pero bah, he hecho una chapucilla y yasta.