[Lua] Too long without yielding

  • Sonstige

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Manawyrm.

    [Lua] Too long without yielding

    Hallo,

    ich habe in Minecraft den Forestry Mod (Bienen) und ComputerCraft
    drauf und wollte ein Programm erstellen, dass die Bienenarten und
    die Anzahl der Bienen anzeigt und schreiben kann.

    Beim Schreiben bekomme ich den Fehler "Too long without yielding"

    Der Fehler befindet sich in der Zeile 64.

    "Code"

    Quellcode

    1. function explode(div,str)
    2. if(div=='') then return false end
    3. local pos,arr = 0,{}
    4. for st,sp in function() return string.find(str,div,pos,true) end do
    5. table.insert(arr,string.sub(str,pos,st-1))
    6. pos = sp + 1
    7. end
    8. table.insert(arr,string.sub(str,pos))
    9. return arr
    10. end
    11. function add(str,num)
    12. first = explode(",",str)[0]
    13. ersetzt = tonumber(first) + tonumber(num)
    14. added = string.gsub(str,first,ersetzt)
    15. return added
    16. end
    17. local beesfile
    18. function write(k,v)
    19. if v == nil then
    20. return false
    21. else
    22. beesfile.writeLine(v)
    23. return true
    24. end
    25. end
    26. while true do
    27. term.clear()
    28. term.setCursorPos(1,1)
    29. print("BeeOS 1.0")
    30. print("What do you want?")
    31. input = read()
    32. if input == "read" then
    33. if fs.exists("bees") == true then
    34. file = fs.open("bees","r")
    35. print(file.readAll)
    36. file.close()
    37. else
    38. print("File doesn't exist")
    39. print("Press enter to continue")
    40. leer = read()
    41. end
    42. end
    43. if input == "write" then
    44. print("How many bees?")
    45. count = tonumber(read())
    46. print("What color they have?")
    47. color = read()
    48. wfile = fs.open("bees","w")
    49. wfile.close()
    50. file = fs.open("bees","r")
    51. local beenden = true
    52. local speichern = {}
    53. while beenden == true do
    54. lesen = file.readLine()
    55. if lesen == nil then
    56. beenden = true
    57. else
    58. if string.find(lesen,color) == true then
    59. table.insert(speichern,add(lesen,count))
    60. else
    61. table.insert(speichern,lesen)
    62. end
    63. end
    64. end
    65. if fs.exists("bees") == true then
    66. fs.delete("bees")
    67. end
    68. beesfile = fs.open("bees","w")
    69. table.foreach(speichern,write)
    70. beesfile.close()
    71. print("Writed successfully!")
    72. print("Press enter to continue")
    73. leer = read()
    74. end
    75. if input == "delete" then
    76. fs.delete("bees")
    77. print("Deleted successfully!")
    78. print("Press enter to continue")
    79. leer = read()
    80. end
    81. end



    P.S.: Habe die Datei vorher nicht erstellt.

    Hoffe, jemand kann helfen.

    MFG

    Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    Ohne mir das genauer angesehen zu haben sage ich, dass der Fehler in Zeile 66 liegt.
    Dort muss

    VB.NET-Quellcode

    1. beenden = false

    stehen.

    Ansonsten solltest du in den Code der While() Schleife nochmal ein sleep(0) hineinbauen, damit sich das Programm beim Watchdog meldet.

    Gruß,
    Manawyrm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()