Anuncios Google

[LuaDEV] Ayuda con files.listdirs()

Hola, tengo el siguiente script que lo que hacer (o intento que haga) es que listar todos las carpetas que se encuentran dentro de ms0:/MUSIC se que el código es un poco desastroso, pero lo empece a hacer hoy, cuando funcione entonces ya lo ordenaré mejor.

 

El error es el siguiente:

script.lua:21: attempt to get length of a nil value

Resumiendo al listar una carpeta que no tiene carpetas dentro se provoca un error

 

directorio = {}
directorio[1] = "ms0:/MUSIC"
 
TXT = io.open("Directs.txt","a")
 
carpetas = {}
x = 1
y = 1
 
num = 0
 
 
 
 
for i = 1, #files.listdirs(directorio[1]) do
carpetas[i] = files.listdirs(directorio[i])
directorio[i+1] = carpetas[1][i].name
end
 
for i = 2, #files.listdirs(directorio[1]) do
if #files.listdirs(directorio[i]) != nil then
num = num + #files.listdirs(directorio[i])
end
end
 
for i = #carpetas+1, num do
carpetas[i] = files.listdirs(directorio[i])
directorio[i+1] = carpetas[x][y].name
y = y + 1
if #carpetas[x] == i then x = x + 1 y = 1 end
end
 
for i = 1, #directorio do
TXT:write(directorio[i].."\n")
 
if i == #directorio then
io.flush(TXT)
io.close(TXT)
usb.on()
os.message("Terminado")
end
end
 
 
while true do
 
screen.print(5,5,#directorio)
screen.print(5,25,#carpetas)
screen.flip()
end

 

Espero que me podais ayudar.


Sígueme en Twitter: @Aitor_db


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de AitorDB

By Aitor

Tengo un nuevo fallo, ahora la PSP se queda pillada

 

directorio = {}
directorio[1] = "ms0:/MUSIC"
 
TXT = io.open("Directs.txt","a")
 
carpetas = {}
x = 1
y = 1
 
num = 0
a = 0
 
 
 
for i = 1, #files.listdirs(directorio[1]) do
carpetas[i] = files.listdirs(directorio[i])
directorio[i+1] = carpetas[1][i].name
end
 
for i = 2, #files.listdirs(directorio[1]) do
if files.exists(directorio[i]) then
num = num + #files.listdirs(directorio[i])
end
end
 
for i = #carpetas+1, num do
carpetas[i] = files.listdirs(directorio[i])
if not (carpetas[x][y] == nil) then
a = a + 1
directorio[i-a+1] = carpetas[x][y].name
end
y = y + 1
if #carpetas[x] == i then x = x + 1 y = 1 end
end
 
for i = 1, #directorio do
TXT:write(directorio[i].."\n")
 
if i == #directorio then
io.flush(TXT)
io.close(TXT)
usb.on()
os.message("Terminado")
end
end
 
 
while true do
 
screen.print(5,5,#directorio)
screen.print(5,25,#carpetas)
screen.flip()
end


Sígueme en Twitter: @Aitor_db

Imagen de NEKERAFA

Mmm...

Si te devuelve nil es que no existe el directorio. Si el directorio está vacío te tiene que devolver una tabla vacia.

Imagen de AitorDB

By Aitor

Gracias probare comprobando antes si la variable existe

Edito: solucionado

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.