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.
Hablando de leer ficheros
Si quereis saber el tamaño de un archivo (en bytes), puede que esto os sea util:
Saludos!
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.
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
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.
Intenta si
Haber si te lee la primera linea
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?
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.
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
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.
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").
No me quedo muy claro pero
No me quedo muy claro pero okey :)