Anuncios Google

Error en LuaHM7 "Too many files open"

Pues eso, estoy creando una nueva versión de mi homebrew (esta ves en HM7) pero me da un error:

Entro al menú principal y después al de gameboots (hasta ahí todo bien), pero si realizo unas dos acciones (flasheo, borrado, etc...) y despues al intentar salir al menú principal me arroja este error:

Too many files open

¿Alguien sabe como se solucione?

sAlud0s!


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com


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.

Pon el codijo asi te podrán

Pon el codijo asi te podrán ayudar más.

Imagen de pspgorrister

Igual es que no cierras bien

Igual es que no cierras bien los ficheros abiertos, por esa parte del código a ver si alguien puede ayudarte viéndolo.

 

Un saludo


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de el__QAT

Tengo solo un fichero...

Abierto, que es el de los nombres de los gameboots:

--Abrir Archivo--
archivo = io.open("./GAMEBOOTS/Gameboots names.txt","r")
 
 
--Leer las 20 Lineas--
Linea1 = archivo:read()
Linea2 = archivo:read()
Linea3 = archivo:read()
Linea4 = archivo:read()
Linea5 = archivo:read()
Linea6 = archivo:read()
Linea7 = archivo:read()
Linea8 = archivo:read()
Linea9 = archivo:read()
Linea10 = archivo:read()
Linea11 = archivo:read()
Linea12 = archivo:read()
Linea13 = archivo:read()
Linea14 = archivo:read()
Linea15 = archivo:read()
Linea16 = archivo:read()
Linea17 = archivo:read()
Linea18 = archivo:read()
Linea19 = archivo:read()
Linea20 = archivo:read()
 
--Cerramos archivo--
archivo:close()

Y creo que está bien cerrado.


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de pspgorrister

Bueno, puede ser que read te

Bueno, puede ser que read te lea el fichero en modo binario (ni idea de esto), quizás con lines te irá mas ligero, puesto que lee de linea en linea. Prueba a ver si así te va mejor:

archivo = io.open("./GAMEBOOTS/Gameboots names.txt","r")
lineas = {}
n = 0  -- Supongo que el primer elemento será el 0, sino poner 1
for lin in archivo:lines() do
    lineas[n] = lin
    n = n + 1
end
archivo:close()

Con eso tienes las lineas en un vector, en vez de en XX variables: lineas[1], lineas[13], etc.
En n+1 tienes la cantidad de lineas que hay.

La ventaja es evidente, el código no depende de las lineas del fichero, te irá igual con 3 que con 300


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de pspgorrister

Editado, la cantidad de

Editado, la cantidad de lineas es n, no n+1 Pie en la boca

Imagen de P22

Por favor, dime como se usan

Por favor, dime como se usan los vectores, me vendrían perfectOS para mi juegoTriste

Imagen de pspgorrister

Pues hay poco que explicar,

Pues hay poco que explicar, hazte a la idea de que un vector es una variable de variables

nombre1 = "pepe"

nombre2 = "juan"

nombre3 = "tamparatam"

Es lo mismo que

nombres = {}  --inicializa el vector

nombres[1] = "pepe"

nombres[2] = "juan"

nombres[3] =   "tamparatam"

 

De esa forma tienes los nombres es una sola variable "nombres" y accedes a ellos por un índice. Además seguramente Lua (como cualquier lenguaje) tenga funciones para ordenar, buscar, etc. elementos del vector.


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de P22

Así que me lleváis

Así que me lleváis mareando tanto con esto de los vectores para decirme que son arrays ahora ¿eh?¬¬XDXD

N, es broma,pero bueno me sirve de ayuda.

Por cierto, tengo una duda, yo tengo este código.

rojo = {}
  rojo[1] = { 145 }
  rojo[2] = { 500 }
  ...
--etc, etc, etc... La array sigue con muchos más valores.

Ahora quiero saber, qué sería más rápido, de estos dos modos de restar 3 a cada una:

-- Primero
rojo[1].1 = rojo[1].1 - 3
-- Así sucesivamente.
--Segundo
i = 0
...
while i < x indices de array rojo do
    for i = i + 1
    rojo[i].1 = rojo[i].1 -3
end
    if i == x indices de array rojo then
       i = 0
    end 

Saludos


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de ZYX3D

Sí pero no

Me recuerda un chiste viejo (y malo: os lo cuento para causar el caos y la destrucción), que decía algo así como "tantos años para aprender a decir «piñícula», para que ahora lo llamen «flin»". Algo parecido me pasa a mí con las "variables de matriz", los "arrays" y los "vectores" :)

Pero cabe distinguir, por un lado, entre los arrays de índice numérico (nombres[1], nombres[2]...), y por el otro de los de "índice cadena" (nombres.nombrePropio, nombres.Apellido). Lo que en algunos lenguajes son "arrays" y"objetos". Y aparte, la cuestión que generalmente, si no me equivoco, se considera que un vector es un array unidimensional, y generalmente numérico (no forzosamente, o no por definición); si no, ya sería un array/vector de objetos, o algo así.

La diferencia empieza a ser importante cuando tienes en cuenta que en una cosa como:

Entradas={1, 3, 5, 9 , 8};

...puedes hacer la media aritmética, sumatorio (suma de todos los objetos), etc. Algo más difícil en un array de objetos o una matriz n-dimensional (ahora es cuando esto ya empieza a parecer ciencia-ficción. Señor Sulu, itere recursivamente el sumatorio de la matriz y sáquenos de aquí antes de que los romulanos nos torpedeen).

 


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de pspgorrister

Estás creando un vector de

Estás creando un vector de vectores, no sé porqué te inventas esta sintaxis

rojo[1] = { 145 }

es
rojo[1] = 145


Respecto a lo de la rapidez rojo[1].1
¿¿¿Qué es ese ".1"???

LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de P22

Lode el vector de vectores

Lode el vector de vectores que dices, yo lo aprendíasí, y lo otro me equivoque sería así:

rojo = {}
  rojo[1] = { y = 145 }
  rojo[2] = { y = 500 }
  ...
--etc, etc, etc... La array sigue con muchos más valores.

Y sustituyendo el 1 por y.

Saludos.

PD: Me refería que cual sería más rápido respecto a ocupar memoria, pues está muy escasa para mi juego.

sAludos


¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.

Mi review: iPod Touch 4G

Imagen de pspgorrister

No tiene sentido "cual es

No tiene sentido "cual es más rapido respecto a ocupar memoria". Estás juntando velocidad con capacidad.

Ocupar, te ocupará lo que ocupe el vector, lo recorras del derecho, del revés o de medio lao :D

Sobre velocidad, si vuelves a leer el interesante post de ZYX3D, comenta que para saber la capacidad de un vector, se use el método getn(). Usando esa función, lo que quieres hacer se puede hacer con 3 lineas:

for n 1,rojo.getn() do
  rojo[n].y = rojo[n].y - 3
end

No estaría de más que te miraras algo de metodología de programación Guiño


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de P22

Oh, muchas gracias, estoy

Oh, muchas gracias, estoy mirando esto de la metodología y está muy interesante!!!!

Saludos

Imagen de ZYX3D

Apunte tonto...

Recuerda la peculiar "ortografía" de Lua. Bueno, por un lado, creo que getn() es función (o sea que sería getn(rojo)).

No, aparte de eso -te lo digo porque yo con los métodos de Lua siempre caía en lo mismo- es lo de los dos puntos o punto, que si es dos puntos pasas la instancia como primer parámetro implícitamente, mientras que si lo haces con punto, debes hacerlo llamando al método de la clase.

O sea, para quien no lo haya entendido, suponiendo que getn sea método y no función, sería:

rojo:getn()

o

table.getn(rojo)

o

rojo.getn(rojo)

pero no rojo.getn(), porque entonces en realidad estaríamos pasando un parámetro nulo, así que o no recibiríamos nada, o un error catastrófico (bueno, termina la ejecución, tampoco es tan catástrofe ;D).

Eso, o el operador #, claro (#rojo es el número de índices en "rojo"). La verdad es que lo de que no se puedan tener nulos me fastidiaba tanto que acabé por hacerme una clase "Array", con su campito de "longitud", y lo demás con índices numéricos.

Aparte de eso, añadir que en los arrays asociativos la cosa puede complicarse muchísimo más, ya que se pueden establecer alias a los índices/claves, y que una cosa es iterarlos via métodos, vía metamétodos (métodos de la metatabla de clase, que igual son distintos a los de la instancia, si a la instancia le hemos dado otros métodos o metamétodos, que se puede hacer) o "en bruto" con rawget y similares...

Pero si de momento andamos peleándonos con los índices numéricos, los metamétodos de __index aún nos quedan un pelín lejos :)


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de P22

metodoqué?

metodoqué?

Imagen de pspgorrister

LOL!

5mentarios... ¬¬

Imagen de P22

En serio, que es eso?

En serio, que es eso?

Imagen de ZYX3D

Básicamente, table

Constructor rápido:

nombres={"pepe", "juan", "tamparatam"}

Nota FUNDAMENTAL (qué pereza me dan las negritas, diooooooos):

Cuando una tabla tiene un valor nil, se acaba.

nombres={"pepe", "juan", nil, "Nil", "Neil"}

tiene, a efectos de Lua, DOS elementos y dos índices.

Iterador: ipairs. En una construcción del tipo:

for clave, valor in ipairs(nombres) do

end

"Clave" (o el nombre que le demos al primer parámetro después del for) es el índice (1, 2, 3, etc.), "valor" o el nombre que demos al segundo índice, el valor del elemento de ese índice (en el ejemplo, 1=>"pepe", 2=>"juan"), etc.

 

Obviamente (o no tan obvio, pero da igual), uno puede esquivar la "prohibición de los nil" con algo como:

nombres={"pepe", "juan", numero=5};

y una construcción del estilo

 

for i=1, nombres.numero do

end

 

serviría igual que el ipairs a nuestra tabla, pero podría contener nulos.

Para saber cuantos elementos hay en un vector (es decir, hasta el primer nulo): getn() (o table.getn(), ahora no recuerdo bien) o el operador #.

Ej.
for i=1, #nombres do

nombreActual=nombres[i];

end

es igual que

for clave, valor in nombres do

nombreActual=valor

--o bien: nombreActual=nombres[clave]

end

 

Y para ordenar, añadir, etc., los métodos de la clase table (como table.sort(), table.insert(), etc.)

 


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

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.