Anuncios Google

¿Estoy haciendo algo mal o es imposible?

Bueno, despues de tener problemas con las fuentes en LuaPlayer HM 8 he desistido, y he vuelto al HM 7.

El problema esta en que quiero tener algunas de las funciones del Lua Player HM 8 cargando los PRX (del HM8) en el HM 7. Todo se carga correctamente, el problema llega al usar la fucnion System.homePopup(0), me da un el error de:

Error: Script.lua:3 Attempt to call field 'homePopup' (a nil value)

Press start to restart

Os pongo aqui la parte del codigo que nos interesa:

System.assign("flash1:","lflash0:0,1","flashfat1:") --Asigna la Flash 1
System.loadPrx("flash1:/LPHMDRIVER/syslib.prx") --Carga el PRX desde la Flash 1
System.homePopup(0) -- Desactiva el Popup que aparece al pulsar HOME

Hay dos posibilidades:

  1. Es imposible usar las Funciones del Lua Player Hm 8 en el Lua Player Hm 7, aunque se carguen los PRX.
  2. Estoy haciendo algo mal (esoe spero) y si es posible hacer lo que intento.

¿Alguna respuesta?

 


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----


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 pspgorrister

pensando...

Bueno, aunque mi conocimiento en Lua sea mínimo, hay una cosa en el código curiosa. A ver si lo he entendidod bien.

En la segunda linea cargas la unidad System de la versión 8. ¿no?

El problema es que El "System." que estás usando es el 7, incluso después de usar la segunda linea, System no ha cambiado (1)

Al llegar a la tercera linea sigues con el "System" de la versión 7.

 

Puede que esté ahí el problema.

 

(1)Aunque no estoy seguro, me imagino que se System se inicializa al comenzar la aplicación, por eso no cambia su valor en mitad de la misma.


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

Imagen de Arbër

Se supone que el programa

Lee el codigo de linea a linea y lo ejecuta, es decir:

  • Lee la linea uno, la ejecuta.
  • Lee la linea dos, la ejecuta.
  • Lee la linea tres, la ejecuta.

Asi que en teoria deberia de funcionar... ¿No?

Pero creo que es imposible.


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de pspgorrister

Bueno, es lo que te comento.

Bueno, es lo que te comento. Por eso decía que es un código curioso. de eso que parecen simples pero se salen de lo común.

Voy a ver si me explico mejor.

Tenemos la  variable (yo le voy a llamar objeto) System. Este system es un objeto que se inicializar al lanzarse el programa *antes* de ejecutar cualquier instrucción.De hecho esto se puede comprobar que es cierto porque System no se ha inicializado explícitamente, tú no le has dado ningún valor. y puede usarse sin problemas.

Bien, al llegar la primera instrucción está claro que System es el bjeto system de la versión 7. Todo ok

En la segunda linea, se supone que tu haces una carga de un modulo/librería/o como se llame en Lua, versión 8. *Pero* hemos visto que System se inicializa al principio de la aplicación, la aplicación ya está lanzada, ese System está en otro espacio de trabajo (seguramente dentro del módulo que cargas sólamente). Así que no se inicializa.

Es más si se inicializará sería seguramente un cuelgue, porque System a dejado de apuntar a donde estaba en el momento de llamar a loadPrx. Entonces piensalo. Al retornar de loadPrx en la linea 2 aún estaríamos apuntando al de la versión 7, el que haría el tratamiento de fin de función, pero si apuntara a 8, sería un desbordamiento de memoria. ¿cómo sabe el intérprete que debe apuntar al System 7 todavía en la linea 2 (habiendo cargado otro System) y luego en la siguiente al System 8?. No puede saberlo, es una ambiguedad. Es decir:

  • En la linea 2 antes de llamar a la función loadPrx(), el objeto System es de la versión 7
  • Mientras aún está ejecutando la función pasa a la versión 8,
  • ¿y como retorna el valor a la versión 7, si el objeto 7 ya no existe?. No le puedes decir al interprete: "mira este System es de la versión 7 en las lineas 1 y 2, pero en cuando ejecute la función loadPrx(), devuelves el valor y en la siguiente linea me lo conviertes al 8"

No conozco ningún lenguaje que permita eso que quieres hacer, no se puede cambiar un objeto a sí mismo mientras está ejecutando un método (en este caso loadPrx) sin colapsar la aplicación.

PD: El hecho de que no te error, significa que lo que haces está bien, pero no puedes volver a inicializar el objeto System en el módulo en el que estás.

PD2: Aunque lo dudo mucho, puede que haya otra forma de hacer eso que quieres, pero escapa a mis conocimientos. El problema de Lua es que no admite punteros. En un lenguaje con punteros se podría hacer, aunque sería MUY peligroso y hay que tener bien planificado qué es lo que se quiere hacer.


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

Imagen de Arbër

¿Insinuas que...?

¿Insinuas que al iniciar el System con una funcion de HM7 (loadPRX() en este caso) no lo puedo transformar en un System de funcion de HM8 (System.Popup() la funcion que quiero usar), no?

Pues viendolo de ese modo, lo que intento yop hacer es realmente imposible (lo que yo me temía).

Supongo que por ahora me quedaré con LuaPlayer HM 7 y sus limitaciones.


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de _Dark_Cloud_

Buenas

¿Y si haces una miniaplicacion en C cargando el PRX y acto seguido cargas el eboot del lphm7? Quizá funcione ;)

Salu2



¡Visca el Barça y Viva España!

Imagen de P22

No encuentro solución a lo

No encuentro solución a lo que pides, pero siempre te puedo decir lo mismo que al el__Qat, cuando necesites el eboot de hmv2(te recomiendo mas que el otro), puedes cargarlo, y cuando no, no lo carges, siempre que acabes carga otra vez el 7.

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

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.