Anuncios Google

[Luadev] leer ficheros

Saludos he aquí otra de mis famosas duda xD, y esta es como puedo imprimir en pantalla lo que un fichero en mi caso un txt o un .lua sea leído y imprimido en pantalla lo que él leyó yo estoy usando este CODE:

if controls.press("square") and files.ext(workDir[posicion].name) == "txt" then
texto = io.open(workDir[posicion].name,"r")
screen.print(100,19,texto:read(),blanco) -- error aqui donde esta "texto:read()" me dice que obtuvo un nulo
end

Quien me puede ayudar gracias de antemano.



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.

Hablando de leer ficheros

Si quereis saber el tamaño de un archivo (en bytes), puede que esto os sea util:

function GetLengt(filename)
local fh = assert(io.open(filename, "rb"))
local len = assert(fh:seek("end"))
fh:close()
return len
end

 

Saludos!

 

Imagen de Jepte

para evitar algunos errores

para evitar algunos errores pasale un tostring().

Si tienes ese print en un

Si tienes ese print en un while (supongo si) es obvio que te va dar error. Un read limpio te devuelve toda una línea, pero cuando llega al final del fichero te devuelve nil.
Lo que debes hacer es, una de dos, o lees las líneas una por una y las guardas en una tabla (y luego las imprimes igual una por una con el for de toda la vida), o lees todo de golpe a una variable (var=texto:read("*a")) y la usas en el print.

Imagen de gdljjrod

Porque

Aqui solo abres el archivo texto = io.open(workDir[posicion].name,"r")

pero no lo estas leyendo y ya lo quieres imprimir en pantalla.

buffer = texto:read(1) --aqui lee de un solo caracter

aqui una linea completa

nuestraLinea = archivo:read()

Te aconsejo te pases por la sección de tutoriales: Ficheros


 

Imagen de -DjB

En primer lugar waou que

En primer lugar waou que rapido, en segundo ya he pasado mucho por ahí no he salido de ese node y tercera de ahí solo pude comprender el de escribir.


Imagen de gdljjrod

Intenta si

Haber si te lee la primera linea

if controls.press("square") and files.ext(workDir[posicion].name) == "txt" then
texto = io.open(workDir[posicion].name,"r")
nuestraLinea = archivo:read()
screen.print(100,19,nuestralinea,blanco)


 

Imagen de -DjB

He puesto esto en el bucle if

He puesto esto en el bucle
if controls.press("square") and files.ext(workDir[posicion].name) == "lua" then
text = io.open(workDir[posicion].name,"r")
nuestraLinea = text:read()
screen.print(100,19,nuestralinea,blanco)
end

me da valor nulo será por lo mismo?


Imagen de gdljjrod

Checa la ruta

Para ejemplo pon una ruta absoluta de un archivo para abrirlo, ms0:/ruta/mi.lua y checa bien la variable nuestraLinea != nuestralinea.


 

Imagen de -DjB

Checa puse esto: text =

Checa puse esto:
text = io.open("ms0:/script.lua","r")
nuestraLinea = text:read()
screen.print(100,19,nuestralinea,blanco)
me dice simbolo inesperado cerca de end al final del bucle


Imagen de gdljjrod

Por ahora

Por ahorita solo hazlo una vez, que solo te imprima una sola linea y no que te lea todo el texto para que vayas comprendiendo si lo esta leyendo bien.


 

Imagen de -DjB

Ok ya lo leyó pero

Ok ya lo leyó pero desapareció muy rápido la linea del archivo eso es senal de que ya vamos adelantando.

Imprime la variable donde

Imprime la variable donde guardaste el texto fuera de la condición... y listo. También puedes detener el code después de imprimir y hacer flip (con controls.waitforkey es lo más fácil, muy útil para lograr ese efecto de "Presione cualquier tecla para continuar/regresar/cerrar").

Imagen de -DjB

No me quedo muy claro pero

No me quedo muy claro pero okey :)

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.