This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Frostcup's profile picture

Need help with <eof> error

Started by Frostcup, 07 April 2013 - 11:56 PM
Frostcup #1
Posted 08 April 2013 - 01:56 AM
Hi
I´m new here and I have a little problem with a programm i´m working on.
It´s part of my own Reactor controll system.
I´m always getting the failure:

bios:206: [string "stop"]:45: '<eof>' expected
Spoiler

idt = "66"
cpass = "notaus"
aus = "1"
print("Notabschaltung initialisiert...")
sleep(2)
print("Programmabschnitte werden geladen...")
sleep(2)
print("Authentifiezierung erforderlich!")
sleep(2)
print("Bitte geben sie Ihre Personal ID ein: ")
sleep(2)
id = read()
if id == (idt) then
print("ID Bestätigt!")
sleep(1)
print("Bitte Passwort eingeben: ")
pass = read()
if pass == (cpass) then
  print("Passwort Korrekt!")
  sleep(2)
  print("Notabschaltung wird durchgeführt...")
  redstone.setOutput("bottom",true)
  sleep(2)
  print("Erfolg!")
  sleep(1)
  print(" ")
  sleep(1)
  print("Zum Reaktivieren drücken sie bitte [1]")
  print("Zum spätern Reaktivieren drücken sie bitte [Esc]")
  var = read()
  if var == (aus) then
   redstone.setOutput("bottom",false)
   sleep(2)
   print("Reaktor Reaktiviert!")
   end
  else
  end
else
print("Falsches Passwort!")
sleep(1)
print("Notabschaltung wird abgebrochen!")
sleep(2)
os.shutdown()
end
else
print("Unzulässige ID!")
print("Notabschaltung wird Abgebrochen!")
sleep(2)
os.shutdown()
end

Can someone pls help me?
I don´t know how to fix this


mfg
Frostcup



PS: Sry for my bad english :rolleyes:/>
Doyle3694 #2
Posted 08 April 2013 - 01:59 AM
you have 1 too many ends
Telokis #3
Posted 08 April 2013 - 02:01 AM
If structure is "If"/"Else"/"End". You use "If"/"End"/"Else"/"End".

And you don't have to do

else
  -- Nothing at all
end

You can remove the else if you don't need it.
Imque #4
Posted 08 April 2013 - 02:24 AM
Ok, I have seen a few to many ends, here the code that should work but I can test it since I cannot understand what language it is in.

Spoiler

idt = "66"
cpass = "notaus"
aus = "1"
print("Notabschaltung initialisiert...")
sleep(2)
print("Programmabschnitte werden geladen...")
sleep(2)
print("Authentifiezierung erforderlich!")
sleep(2)
print("Bitte geben sie Ihre Personal ID ein: ")
sleep(2)
id = read()
if id == (idt) then
  print("ID Bestätigt!")
  sleep(1)
  print("Bitte Passwort eingeben: ")
  pass = read()
	if pass == (cpass) then
	  print("Passwort Korrekt!")
	  sleep(2)
	  print("Notabschaltung wird durchgeführt...")
	  redstone.setOutput("bottom",true)
	  sleep(2)
	  print("Erfolg!")
	  sleep(1)
	  print(" ")
	  sleep(1)
	  print("Zum Reaktivieren drücken sie bitte [1]")
	  print("Zum spätern Reaktivieren drücken sie bitte [Esc]")
	  var = read()
	  if var == (aus) then
		redstone.setOutput("bottom",false)
		sleep(2)
		print("Reaktor Reaktiviert!")
	  end
	else
	  print("Falsches Passwort!")
	  sleep(1)
	  print("Notabschaltung wird abgebrochen!")
	  sleep(2)
	  os.shutdown()
	end
else
  print("Unzulässige ID!")
  print("Notabschaltung wird Abgebrochen!")
  sleep(2)
  os.shutdown()
end

EDIT : Horrible indenting due to Notepad++ tab spacing
SadKingBilly #5
Posted 08 April 2013 - 02:56 AM
All your problems are caused by your if-else conditionals. Here is the fixed code:

idt = "66"
cpass = "notaus"
aus = "1"
print("Notabschaltung initialisiert...")
print("Programmabschnitte werden geladen...")
print("Authentifiezierung erforderlich!")
print("Bitte geben sie Ihre Personal ID ein: ")
id = read()
if id == idt then
    print("ID Bestätigt!")
    print("Bitte Passwort eingeben: ")
    pass = read()
    if pass == cpass then
	    print("Passwort Korrekt!")
	    print("Notabschaltung wird durchgeführt...")
	    redstone.setOutput("bottom",true)
	    print("Erfolg!")
	    print()
	    print("Zum Reaktivieren drücken sie bitte [1]")
	    print("Zum spätern Reaktivieren drücken sie bitte [Esc]")
	    var = read()
	    if var == aus then
		    redstone.setOutput("bottom", false)
		    print("Reaktor Reaktiviert!")
	    end
    else
	    print("Falsches Passwort!")
	    print("Notabschaltung wird abgebrochen!")
	    os.shutdown()
    end
else
    print("Unzulässige ID!")
    print("Notabschaltung wird Abgebrochen!")
    os.shutdown()
end
Imque #6
Posted 08 April 2013 - 02:58 AM
Is that the same as what I posted?
remiX #7
Posted 08 April 2013 - 04:58 AM
Is that the same as what I posted?

Looks like he removed the sleeps, now the user won't be able to read what's going on!

Another tip Frostcup, instead of using os.shutdown(), you can loop the entire program so you do not have to restart the computer (i'm guessing this program is called startup)

Spoiler
idt = "66"
cpass = "notaus"
aus = "1"
print("Notabschaltung initialisiert...")
sleep(2)
print("Programmabschnitte werden geladen...")
sleep(2)
print("Authentifiezierung erforderlich!")
sleep(2)
while true do
	print("Bitte geben sie Ihre Personal ID ein: ")
	sleep(2)
	id = read()
	if id == (idt) then
		print("ID Bestätigt!")
		sleep(1)
		print("Bitte Passwort eingeben: ")
		pass = read()
		if pass == (cpass) then
			print("Passwort Korrekt!")
			sleep(2)
			print("Notabschaltung wird durchgeführt...")
			redstone.setOutput("bottom",true)
			sleep(2)
			print("Erfolg!")
			sleep(1)
			print(" ")
			sleep(1)
			print("Zum Reaktivieren drücken sie bitte [1]")
			print("Zum spätern Reaktivieren drücken sie bitte [Esc]")
			var = read()
			if var == (aus) then
				redstone.setOutput("bottom",false)
				sleep(2)
				print("Reaktor Reaktiviert!")
			end
		else
			print("Falsches Passwort!")
			sleep(1)
			print("Notabschaltung wird abgebrochen!")
			sleep(2)
		end
	else
		print("Unzulässige ID!")
		print("Notabschaltung wird Abgebrochen!")
		sleep(2)
	end
end