Fs problems...
SethShadowrider 26 Jan 2013
So let me start off by making this statement. I am completely stumped. For a long time i've been trying different ways of writing this code, originally it gave me the error of attempted to index nil when attempting to open the file I was editing with the fs api. Since then its gone to telling me the stream ended when attempting to write to the file. I googled around and checked the help in computercraft for almost 2 hours straight and have come up with nothing so I am going to post it here. Sorry if it's a bit messy I haven't really refined it much yet i'm looking for functionality for now.
--get the screen size local w,h = term.getSize() --helpful functions function printCentered(str, ypos) term.setCursorPos(w/2 - #str/2, ypos) term.write(str) end function printRight(str, ypos) term.setCursorPos(w - #str, ypos) term.write(str) end function poot() while true do sleep(.1) local x = math.random(1, w) local y = math.random(1, h-1) term.setCursorPos(x, y) print("Poot") end end function drawLogo() shell.run("clear") term.setCursorPos(w/2-8, 2) textutils.slowPrint("Fierce Deity Inc.") term.setCursorPos(w/2-8, 3) textutils.slowPrint("-----------------") end function newAcc() if fs.exists("newAcc") == false then fs.open("newAcc", "a") drawLogo() printCentered("New User", 4) printCentered("--------", 5) printCentered("Username:", 7) printCentered("--------------", 9) term.setCursorPos(w/2-7, 8) local uname = read() local file = fs.open("newAcc", "a") file.close() file.writeLine(uname) elseif fs.exists("newAcc") == true then shell.run("clear") print("User exists!") end end newAcc()
Zoinky 26 Jan 2013
You're closing the program (Woops! ) file before you're writing in it. I tried to fix your function up a little, see if this works:
Edited by Zoinky, 26 January 2013 - 10:21 PM.
function newAcc() if fs.exists("newAcc") == false then drawLogo() printCentered("New User", 4) printCentered("--------", 5) printCentered("Username:", 7) printCentered("--------------", 9) term.setCursorPos(w/2-7, 8) local uname = read() local file = fs.open("newAcc", "a") file.writeLine(uname) file.close() elseif fs.exists("newAcc") == true then term.clear() term.setCursorPos(1,1) print("User exists!") end end
Edited by Zoinky, 26 January 2013 - 10:21 PM.
SethShadowrider 27 Jan 2013
That worked great but now i'm back at square one. When I attempt to execute this code I get the error attempted to index nil
local sName = fs.open("newAcc", "a") local spName = sNAme.readLine() sName.close() print("Welcome"..spName)is there any fix for this?
crazyguymgd 27 Jan 2013
SethShadowrider, on 27 January 2013 - 10:48 AM, said:
That worked great but now i'm back at square one. When I attempt to execute this code I get the error attempted to index nil
local sName = fs.open("newAcc", "a") local spName = sNAme.readLine() sName.close() print("Welcome"..spName)is there any fix for this?
second line you have sNAme instead of sName
remiX 27 Jan 2013
local spName = sNAme.readLine()
sNAme must be sName
edit: had tab open for too long xD
SethShadowrider 27 Jan 2013
That was actually an error in rewriting it into the browser i'm playing multiplayer.
Zoinky 27 Jan 2013
SethShadowrider, on 27 January 2013 - 01:18 PM, said:
That was actually an error in rewriting it into the browser i'm playing multiplayer.
local sName = fs.open("newAcc", "r")Instead of:
local sName = fs.open("newAcc", "a")
EDIT: For future reference,
A = Append mode. Use this to add lines to a file.
W = Write mode. Use this to rewrite the content of a file. (Write mode will delete everything already in the file and put in the lines you give it.)
R = Read mode. Use this to read from a file.
You can find more info and some examples about the FS API here.
crazyguymgd 27 Jan 2013
SethShadowrider 28 Jan 2013
Oooh okay thanks I assumed that a would let me read as well as write.
Thanks!
Thanks!