Anuncios Google

[EDITO: RESOLUCIONADO CON INI'S GRACIAS A CHIME] Necesito ayuda con los ini's en LuaDev, ya que me tienen algo desesperado ya...

Buenas, amigos... lo cierto es que ya ando MUY cansado con el tema de los ini's en LuaDev... no se si seré que lo hago mal o algo pero es que no me explico cual es el problema:

Yo tengo un .ini con lo siguiente:

user=David
pass=admin
theme=default

Y hago lo siguiente:

users = {
    first = {
            user = ini.read("RUTADELINI","user",1),
            pass = ini.read("RUTADELINI","pass",2),
            theme = ini.read("RUTADELINI","theme",3),
        },
}
 
text = "admin";
 
while true do
    controls.read();
        if controls.press("cross") then
            if text == users.first.pass then
                screen.print(20,20,"OK");
            else
                screen.print(20,20,"NO");
            end
        end
    screen.flip();
end

¡PERO NO FUNCIONA! Me indica SIEMPRE "NO"... y no lo entiendo, la verdad...

Pero lo más gracioso llega ahora, ya que si hago lo siguiente:

users = {
    first = {
            user = ini.read("RUTADELINI","user",1),
            pass = ini.read("RUTADELINI","pass",2),
            theme = ini.read("RUTADELINI","theme",3),
        },
}
 
text = "admin";
 
while true do
    controls.read();
        if controls.press("cross") then
            if text == "admin" then
                screen.print(20,20,"OK");
            else
                screen.print(20,20,"NO");
            end
        end
    screen.flip();
end

O incluso esto:

users = {
    first = {
            user = ini.read("RUTADELINI","user",1),
            pass = ini.read("RUTADELINI","pass",2),
            theme = ini.read("RUTADELINI","theme",3),
        },
}
 
text = "admin";
correctText = "admin";
 
while true do
    controls.read();
        if controls.press("cross") then
            if text == correctText then
                screen.print(20,20,"OK");
            else
                screen.print(20,20,"NO");
            end
        end
    screen.flip();
end

¡FUNCIONA! Y yo me pregunto: ¡¿cómo es eso posible?! ¡Si se supone que ese ini.read() te tiene que devolver el string "admin", y al compararlo debe ser correcto!

Por favor... aclaradme porque yo no soy capaz...

Un saludo.

¡RESOLUCIONADO MEDIANTE INI'S GRACIAS A CHIMECHO!:

El proceso es el siguiente:

Abrimos Notepad++ o derivados y abrimos el ini que queramos arreglar...

Pulsamos en Editar, y después en conversión de salto de linea...

Y pulsamos sobre "UNIX". ¡LISTO!


 

 


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 Davidm16

...

¿Podría ser en LuaHM7? Porque no tengo ni p*** idea de lo que hay arriba.

Explicación

Aún que tendría que estar redactando una noticia en NDS, voy a intentar ayudar por aquí:

 

users = { -- Creamos la tabla users
    first = { -- Dendro de esa tabla creamos otra tabla
 
--[[
Suponiendo que tenemos un ini con lo siguiente:
user=admin
pass=algo
theme=algo
 
Entonces lo leemos así:
]]
            user = ini.read("RUTADELINI","user",1), -- Leemos user y lo almacenamos
            pass = ini.read("RUTADELINI","pass",2), -- Leemos pass y lo almacenamos
            theme = ini.read("RUTADELINI","theme",3), -- Leemos theme y lo almacenamos
        } -- Cerramos las tablas
}
 
text = "admin"; --Creamos una variable
 
while true do -- Bucle
    controls.read(); --Lectura de controles
        if controls.press("cross") then -- Si pulsamos X
            if text == users.first.pass then -- Y text == "admin"
                screen.print(20,20,"OK"); -- Imprime OK
            else -- Si no...
                screen.print(20,20,"NO"); -- Imprime NO
            end -- Cerramos if
        end -- Cerramos otro if
    screen.flip(); -- Refrescamos la pantalla
end -- Cerramos el bucle

Saludos y a ver si me expliqué bien...

Imagen de Davidm16

Gracias.

Pero yo programo en LuaHM. ¿Y en pass = ini.read("RUTADELINI","pass", 2) te lee la línea 2 de tu ini?

Correcto

Si, lee la línea 2.

No lee la línea dos, es el

No lee la línea dos, es el valor por defecto si no encuentra la llave.

Por ejemplo, supongamos que tenemos esto:

temperatura=30

Aquí temperatura es la llave, y 30 es el valor. Pues si al leer la llave "temperatura" no la encuentra, devolverá el valor por defecto (en el caso de arriba el número 2). 

Ups...

Y yo toda la vida pensando que leía la línea dos, porqué todos los codes que me encontré lo ponen por 1,2,3,4...

 

Lo siento por decir algo que no era así...

 

Saludos!

Imagen de Davidm16

Vale.

Probaré con un io.open().

¿Que no entiendes del código

¿Que no entiendes del código de arriba?

Imagen de User170294

Pues revisa la documentación

Pues revisa la documentación de Lua HM 7 y adapta el código.

Imagen de Davidm16

En inglés.

¿Cómo lo traduzco? ¿Lo paso por un traductor de txts inexistentes o por arte de magia? --Sarcástico.

Imagen de User170294

Pensaba que un chabal de 16

Pensaba que un chabal de 16 años ya sabría utilizar con cabeza el traductor de Google o el diccionario de español-inglés. Ha sido un malentendido.


Imagen de Davidm16

Mmm.

El manual tiene más de 2200 caracteres. Y el traductor de google no es muy certero que digamos. ¿Y cómo sabes que tengo 16 años?

Imagen de david77777

...

Por tu nick se puede deducir (David Madrid 16 años (Davidm16)).

No tiene por que

La M16 es un arma, en concreto un fusíl, no tiene porqué ser David Madrid 16 años...

 

Saludos!

Imagen de Davidm16

Sabía que alguien se daría cuenta.

Eres el tío más listo que conozco. Yyyy no, no me define mi avatar. Me lo puse hace 2 años y porque me gustaba por aquel entonces. Ahora me decanto por la Stg44 Sturmgewehr, que aparte de ser alemana, es nazi y antigua, con un diseño de ametralladora ligera con un percutor duro pero de clase y una textura a hierro forjado arrovinao de óxido como las chapas de las alpargatas de mi abuelo. Ffff me ando por las ramas. Pero todavía me sigue gustando el M16. Muy bien por darte cuenta.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Imagen de david77777

...

Por algún tema del foro, dijo que es de la comunidad de Madrid (y creo que tambien menciono su edad) por.lo que lo deduje así. El fusil en el nick, es otra probabilidad, aunque dejemos que nos lo aclare él.

Edito: Creo que lo dijo cuando preguntaron si era viciosoWii trolleando por los foros

Imagen de Davidm16

Por favor, señores.

Por Mensajes Privados. Que no tiene nada que ver con el foro y lo llenamos con muchos comentarios.

Imagen de zerozelta

no, ambos son lenguaje lua,

no, ambos son lenguaje lua, basicamente solo cambian la forma de llamar a las funciones (y las funciones mismas)

solo renombra las funciones que hay en el codigo de luaDEV por su equivalente en luaHM


Imagen de NEKERAFA

Mmm...

El problema es que HM no tiene lectura de inis como LuaDEV, o lo abres con un dofile si puedes o lo tratas con las librerias io y string


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Davidm16

¡Eso, eso!

io.open(), lo que buscaba. io.open() es abrir un archivo de cualquier modo. Y a lo que voy: quiero escribir algo en una cierta línea al abrir un archivo y luego al iniciarlo que me lo lea. Algo de 'r+' o 'w' que no entiendo y cómo poner la línea pa' que escriba. Ah, y el buscador no es muy certero que digamos.


mundosupernova.mex.tl  El universo del homebrew y PSP.

Tres proyectos en progreso...

Imagen de NEKERAFA

Mmm

"módulo io" #1 respuesta: http://psp.scenebeta.com/node/86839. También tienes un bonito tutorial en la zona de tutoriales.

Imagen de Davidm16

Sí.

Ya me leí ese tuto. Me va de perlas. ¡Pero cómo se hace para escribir en una cierta línea!

Imagen de NEKERAFA

Mmm...

Pues para eso tienes que leerte el manual de lua básico: http://www.lua.org/manual/5.1/es/manual.html, y tienes dos opciones, o utilizas files:lines() (lo más fácil), o utilizas conjuntamente el módulo string y files:seek()


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de zerozelta

que raro, yo creia recordar

que raro, yo creia recordar que si habia un modulo para manejar inis, ya me falla la memoria XD, pero bueno, lo que quiero decir es que el lenguaje es el mismo, solo cambian los nombres de las funciones y las forma de llamarlas

Saludos¡¡


Imagen de NEKERAFA

Mmm...

A lo mejor te confundiste con este http://psp.scenebeta.com/node/52157

Imagen de gdljjrod

puff

Bueno no se como sea en LUA, pero en C para comparar strings es STRCMP(string1,string2);

...

Como estoy aprendiendo Ob-C al principio pensé que era porque habia que utilizar alguna función como esa, tipo "isEqualTo" específica para strings, pero luego recordé que no es así, ya que en LuaDev es más sencillo, es con un simple "=="...

Aun así, ya lo he solucionado, gracias por tu interés.


 

 

No sé si sera...

...esto, pero, creo que te falta poner el ini.load(...) para que luego lo pueda leer, nosé si ya lo habías aclarado pero ese es mi punto de opinión :D

 

Salu2!


 

 

Mmm...

No, ya que funciona sin necesidad alguna de cargar en caché. Aún así, lo he probado como mencionas y sigue sin funcionar...

Entonces

Espera a que venga RG, el "siempre" sabe todo y soluciona dudas :D xD

 

Salu2!

NO!

Ya lo he solucionado... IO RULES! ;D

Imagen de jorge_97

By jorge_97

mmm

Recuerdo que te lo solucioné en su momento  y te funcionó... el CODE es correcto, pero el archivo también lo es??

Revísalo y me dices.

PD: Los INI funcionan a la perfección, es sin duda, una de las cosas más útiles de Luadev, una cosa es que no funcionen y otra que no sepan usarlos ¬¬

Un cordial saludo a todos


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Ya, ya...

Si yo se como hacerlo todo, pero lo que no se es por qué no puedo comparar el string que se almacena con otra variable que contiene exáctamente el mismo string sin que te devuelva false, ya que imprime "NO", cuando debería imprimir "OK"... =/

Un saludo.


 

 

Imagen de jorge_97

By jorge_97

Pues ya te dije... lo probaría... es decir te haría un script para que vieras que funciona pero es innecesario:

 

INI (Sin las comillas):

var=Hola Mundo

 

SCRIPT

var=ini.read("prueba.ini","var","")

var=tostring(var)

if var=="Hola Mundo" then os.message("Esto funciona") end

 

 


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de User170294

Un pequeño detalle: Es más

Un pequeño detalle:

Es más aconsejable poner var = ini.read( "prueba.ini", "var", nil ); antes que var = ini.read( "prueba.ini", "var", "" );.

Saludos.


Imagen de jorge_97

By Jorge_97

...

Sigo viendolo igual ambos

Si pones un read y después un print de ese read y le pones NIL: Error

de mi forma no saltaría error

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de User170294

Hombre pues...

De mi forma recibirás un craso error cuando lo quieras imprimir y de esa manea sabrás que no se está leyendo lo que se tendría que leer. De tu manera se sustituiría una palabra por un hueco en blanco, lo cual puede ser dificil de detectar.

Saludos.


Pues en tu método entonces

Pues en tu método entonces sale sobrando el tostring... ya que devolverás un valor leído o una cadena vacía :P

Imagen de NEKERAFA

XD

Y eso que decia que no me gustaban los ini, y da la casualidad que a me funcionan, jajajaja

Imagen de m.rr

Definitivamente, NO FUNCIONA

Definitivamente, NO FUNCIONA EL INI.READ EN LUADEV R0. He hecho TODAS las pruebas posibles y nada. Dove, mejor utiliza los IO.

Saludos

Imagen de User170294

¿Como?

Los INIs en LuaDev funcionan perfectamente. Y son mucho más cómodos que los archivos de texto, los cuales son más propensos a producir errores.

Si no sabeís como funcionan, RG hizo un post muy bueno sobre su funcionamiento, hecharle un vistazo y comentad.

Saludos.


Imagen de m.rr

He dicho el ini.read(), a

He dicho el ini.read(), a parte he hecho todas las pruebas y No funcionan. Al menos, a mí no me funcionan. Por favor, pasame el link del post. Y aparte, a mí con los IO NUNCA me han dado error.

Saludos

Imagen de User170294

Revisa el código de NextShell.

Si quieres ver ejemplos de como se utiliza correctamente la función ini.read() hechale un vistazo a mi HB NextShell (en cualquiera de sus versiones) y podrás comprobar por tí mismo que si funcionan.

Digo que los IO son más propensos a producir errores simplemente porque su uso es más complejo y es necesario cerrarlos despues de abrirlos.

Al fin y al cabo los INI son archivos de configuración creados especialmente para hacer más sencilla la tarea de administrar la configuración.


Eso es lo que a mi me parece… =/

Eso es lo que a mi me parece… =/

Me tendré que poner a aprender io después de todo...

¿Podríamos hablar por MP o por MSN, si no es molestia? :D


 

 

Imagen de NEKERAFA

Mmm...

Pues a mi me funcionan con el eboot de GDP (Solo edite el nombre, la versión y las imagenes)

Imagen de m.rr

Estoy hablando de los INIs

Estoy hablando de los INIs

Imagen de NEKERAFA

Mmm...

Me callo porque te iba a contestar una burrada... ains...

Y era a lo que me refería. A mi los archivos .ini me funcionan.

Imagen de m.rr

No venga dilo, quiero saber

No venga dilo, quiero saber la burrada xD

Y podrías ser un poco más explicito con lo de que te funciona el ini.read en Luadev y poner un código de ejemplo, por favor?

Imagen de NEKERAFA

XD

Tu quieres que me reporten, no? jajajaja

Si me pusieron una palabra que no hace mal a nadie y que es una palabra como las demás, como una palabra inadecuada, a saber con lo otro...

 

Mira, este es el script de inicio de la antigua versión de NekeOS (seria la pre-release 3 o pre-release 4). Aquí utilizo el ini para leer el archivo de configuración:

--[[
	NekeOS 1.0v
	Creado por NEKERAFA el vie 17 de feb de 2012, 10:38:02 (CEST)
	Licenciado por Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España, 2011 NEKERAFA (nekerafa [at] gmail [dot] com)
	http://creativecommons.org/licenses/by-nc-sa/3.0/es/legalcod...
 
	#	script.lua (Inicio y carga de NekeOS)
	#	Aquí se incia NekeOS y se carga, aparte de que si hay algún error inicia la ventana de recuperación.
]]--
 
controls.homepopup(0)
os.cpu(333)
 
-- ## Variables ##
	pvar = 0
	ptotal = 9
	value = 0
	logo = image.load("system/boot/icon.png"); logo:center()
	users = files.listdirs(string.sub(files.cdir(), 1, 4).."/NEKEOS/users")
	ptotal = ptotal + #users
 
function boot()
	-- ** Idioma de NekeOS **
	confboot = ini.load("system/boot/setting.ini")
	dofile("system/media/languages/"..confboot:read("language", "default")..".lang")
 
	-- ** Inicio del programa **
	for alpha = 0, 255, 1.5 do
		draw.gradrect(0, 0, 480, 272, color.new(255, 255, 255, alpha), color.new(255, 255, 255, alpha), color.new(200, 200, 200, alpha), color.new(200, 200, 200, alpha))
		screen.flip()
	end
 
	for alpha = 0, 255, 10 do
		draw.gradrect(0, 0, 480, 272, color.new(255, 255, 255), color.new(255, 255, 255) , color.new(200, 200, 200), color.new(200, 200, 200))
		logo:blend(240, 136+20-math.floor(alpha*20/255), alpha)
		screen.flip()
	end
 
	-- ** Carga del programa **
	draw.gradrect(0, 0, 480, 272, color.new(255, 255, 255), color.new(255, 255, 255) , color.new(200, 200, 200), color.new(200, 200, 200))
	logo:blit(240, 136)
	draw.gradrect(140, 202, 200, 14, color.new(220, 220, 220), color.new(220, 220, 220), color.new(255, 255, 255), color.new(255, 255, 255))
	screen.print(240, 204, loading, 0.6, color.new(0, 0, 0), color.new(0,0,0,100), "center")
	draw.line(140, 201, 339, 201, color.new(0,0,0, 200)); draw.line(139, 202, 139, 215, color.new(0,0,0, 200)); draw.line(140, 216, 339, 216, color.new(0,0,0, 200)); draw.line(340, 202, 340, 215, color.new(0,0,0, 200))
	screen.flip()
	dofile("loading.lua")
 
	-- ** Lanzando el login **
	for alpha = 255, 0, -10 do
		draw.gradrect(0, 0, 480, 272, color.new(255, 255, 255), color.new(255, 255, 255), color.new(200, 200, 200), color.new(200, 200, 200))
		logo:blend(240, 136+20-math.floor(alpha*20/255), alpha)
		screen.flip()
	end
 
	-- ** Limpiando **
	logo:free(); logo = nil; value = nil; pvar = nil; ptotal = nil; users = nil; x0 = nil
	collectgarbage()
	dofile("login.lua")
end
 
-- ##  Con esta función mostraremos un pantallazo rojo si hay errores en el sistema ## --
function showerr()
	function loadcallback() end
	screen.clip()
	os.autofps(30)
	-- ** Cargamos algunas cosillas **
	pos = string.find(err, ":"); pos1 = string.find(err, ":", pos+1)
	wave = image.load("system/boot/wave.png")
	x0 = 480; x1 = -480
	msg = errorfile.." "..string.sub(err, 1, (pos1 or pos)-1).."\nError: "..string.sub(err, (pos1 or pos)+2)..".\n"..errorcontrols
	errlog = io.open("system/err.log", "a+")
	errlog:write(os.date("%I:%M:%S").." "..os.date("%p")..": "..err.."\n")
	errlog:close(); errlog = nil
 
	-- ** Mostramos el fondo de error **
	for colours = 255, 0, -3 do
		draw.gradrect(0, 0, 480, 272, color.new(255, math.min(colours*200/255+200, 255), colours), color.new(255, math.min(colours*200/255+200, 255), colours), color.new((255-colours)*55/255+200, colours*200/255, colours*200/255), color.new((255-colours)*55/255+200, colours*200/255, colours*200/255))
		screen.flip()
	end
 
	-- ** Bucle infinito, mostramos el mensaje de error
	while true do
		controls.read()
		draw.gradrect(0, 0, 480, 272, color.new(255, 200, 0), color.new(255, 200, 0), color.new(255, 0, 0), color.new(255, 0, 0))
		image.fxtint(x0, 0, wave, color.new(255, 0, 0, 60)); image.fxtint(x0-480, 0, wave, color.new(255, 0, 0, 60))
		image.fxtint(x1, 0, wave, color.new(255, 0, 0, 100)); image.fxtint(x1+480, 0, wave, color.new(255, 0, 0, 100))
		draw.fillrect(0, 0, 480, 20, color.new(255, 255, 255, 128))
		screen.print(3, 7, errortitle, 1, color.new(255, 10, 10), color.new(0, 0, 0, 60))
		screen.print(478, 5, batt.percent().."%   "..os.date("%I:%M").." "..os.date("%p"), 0.9, color.new(255,255,255), color.new(0,0,0, 60), "right")
		draw.line(0, 20, 480, 20, color.new(0, 0, 0, 128))
		draw.fillrect(30, 21, 420, 230, color.new(255, 255, 255, 80))
		screen.print(40, 31, msg, 0.7, color.new(255, 255, 255), color.new(0,0,0,60), "full", 400)
		screen.flip()
		if controls.start() then os.quit() elseif controls.select() then os.runeboot(files.cdir().."/EBOOT.PBP") end
		x0 = x0-2; if x0 < 0 then x0 = 480 end
		x1 = x1+1; if x1 > 0 then x1 = -480 end
		collectgarbage("collect")
	end
end
 
-- ## Función para mostrar la barra de progreso ##
function loadcallback()
	draw.gradrect(0, 0, 480, 272, color.new(255, 255, 255), color.new(255, 255, 255) , color.new(200, 200, 200), color.new(200, 200, 200))
	logo:blit(240, 136)
	draw.gradrect(140, 202, 200, 14, color.new(220, 220, 220), color.new(220, 220, 220), color.new(255, 255, 255), color.new(255, 255, 255))
	if math.floor(value) == 0 then screen.print(240, 204, loading, 0.6, color.new(0, 0, 0), color.new(0,0,0,100), "center")
	elseif math.floor(value) == 1 then screen.print(240, 204, loading..".", 0.6, color.new(0, 0, 0), color.new(0,0,0,100), "center")
	elseif math.floor(value) == 2 then screen.print(240, 204, loading.."..", 0.6, color.new(0, 0, 0), color.new(0,0,0,100), "center")
	elseif math.floor(value) == 3 then screen.print(240, 204, loading.."...", 0.6, color.new(0, 0, 0), color.new(0,0,0,100), "center") end
	screen.clip(140, 202, math.floor(pvar*200/ptotal), 14)
	draw.gradrect(140, 202, 200, 14, color.new(128, 128, 128), color.new(128, 128, 128) , color.new(80, 80, 80), color.new(80, 80, 80))
	if math.floor(value) == 0 then screen.print(240, 204, loading, 0.6, color.new(255, 255, 255), color.new(255, 255, 255, 100), "center")
	elseif math.floor(value) == 1 then screen.print(240, 204, loading..".", 0.6, color.new(255, 255, 255), color.new(255, 255, 255, 100), "center")
	elseif math.floor(value) == 2 then screen.print(240, 204, loading.."..", 0.6, color.new(255, 255, 255), color.new(255, 255, 255 ,100), "center")
	elseif math.floor(value) == 3 then screen.print(240, 204, loading.."...", 0.6, color.new(255, 255, 255), color.new(255, 255, 255 ,100), "center") end
	screen.clip()
	draw.line(140, 201, 340, 201, color.new(0,0,0, 200)); draw.line(139, 202, 139, 216, color.new(0,0,0, 200)); draw.line(140, 216, 340, 216, color.new(0,0,0, 200)); draw.line(340, 202, 340, 216, color.new(0,0,0, 200))
	screen.flip()
	pvar = pvar+1
	value = value+0.3; if math.floor(value) == 4 then value=0 end
end
 
-- ** Llamamos a boot() **
status, err = pcall(boot)
if not status then pcall(showerr) end


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de m.rr

Que raro, yo tengo el eboot

Que raro, yo tengo el eboot de GDP y no me va

Off-Topic: No quería que te reportasen, sino que YO te reportase jajajajaja... es broma

 

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.