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!
Pon el codijo asi te podrán
Pon el codijo asi te podrán ayudar más.
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.
Tengo solo un fichero...
Abierto, que es el de los nombres de los gameboots:
Y creo que está bien cerrado.
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
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:
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.
Editado, la cantidad de
Editado, la cantidad de lineas es n, no n+1
Por favor, dime como se usan
Por favor, dime como se usan los vectores, me vendrían perfectOS para mi juego
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.
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.
Ahora quiero saber, qué sería más rápido, de estos dos modos de restar 3 a cada una:
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
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.
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.
Lode el vector de vectores
Lode el vector de vectores que dices, yo lo aprendíasí, y lo otro me equivoque sería así:
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
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:
No estaría de más que te miraras algo de metodología de programación
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Oh, muchas gracias, estoy
Oh, muchas gracias, estoy mirando esto de la metodología y está muy interesante!!!!
Saludos
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.
metodoqué?
metodoqué?
LOL!
5mentarios... ¬¬
En serio, que es eso?
En serio, que es eso?
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.