Anuncios Google

Ayuda con error en Lua HM7

Hola de nuevo =P,

Hoy me trae de nuevo el LP HM7. Pero esta vez por un error. Tengo el siguiente código:

math.randomseed(os.time())
 
mp3 = System.listDirectory("ms0:/MUSIC")
 
num = {}
num[1] = math.random(3, table.maxn(mp3))
num[2] = math.random(3, table.maxn(mp3))
num[3] = math.random(3, table.maxn(mp3))
num[4] = math.random(3, table.maxn(mp3))
 
[...]
 
function check()
    if mp3[num[1]].directory then -- Linea n° 34
		local tempDir = System.listDirectory(mp3[num[1]].name)
		mp3[num[1]] = math.random(3, table.maxn(tempDir))
		check()
	end
	if mp3[num[2]].directory then -- Linea n° 39
		local tempDir2 = System.listDirectory(mp3[num[2]].name)
		mp3[num[2]] = math.random(3, table.maxn(tempDir2))
		check()
	end
	if mp3[num[3]].directory then -- Linea n° 44
		local tempDir3 = System.listDirectory(mp3[num[3]].name)
		mp3[num[3]] = math.random(3, table.maxn(tempDir3))
		check()
	end
	if mp3[num[4]].directory then -- Linea n° 49
		local tempDir4 = System.listDirectory(mp3[num[4]].name)
		mp3[num[4]] = math.random(3, table.maxn(tempDir4))
		check()
	end
end
 
[...]
 
-- No les pongo todo el código porque es enorme y no creo que quieran pasarse la tarde leyendolo XD

Me manda el error " Script.lua:34: Attempt to index field '?' (A number value)".

Este es el script.lua y he marcado la linea 34.
Lo que se me hace raro es que se supone que mp3[num[1]].directory es booleana. Pero me dice que es numerica? Eso es lo que no entiendo...

Si necesitan algún trozo más de código, diganlo. No lo puse todo porque es bastante extenso...

Un saludo.

PD: También pasa en las lineas 39, 44 y 49...


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.


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 DeViaNTe

Error...

"Intento de indexación del campo '?' (un numero)"

Esto es... que no se encontró ese campo en la tabla mp3.
Primero vigila que los randoms que te devuelve sean números enteros, por si akaso.
Y cuando te pase añade más debug, por ejemplo:

if mp3 then
  System.message("OK 1",1);
end

if num[1] then
  System.message("OK "..num[1],1);
end

if mp3[num[1]] then
 System.message("OK 2",1);
end

if mp3[num[1]].directory then
  System.message("OK "..mp3[num[1]].directory,1);
end

Y de ahi ya buscas qué te produce el error.


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Imagen de moikop

Número con decimales no puede

Número con decimales no puede ser porque le implementé un math.floor para asegurarme.
Y de que no este en el rango del array mp3, tampoco. Ya que es math.floor(math.random(3, table.maxn(mp3))). Por eso. Ya he tratado de millones de formas y es imposible! XD.
Creo que dejaré esto para más adelante. Mientras seguiré con otras mejoras (Ya que si me quedo atascado con esta.... :S).

Un saludo y gracias Dev.


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

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.