Variablen werden nicht in eine INI gespeichert?!

  • Hallo.
    Hier ist ein kleiner Ausschnit aus dem Programm, welches ich fast fertig gestellt hab. Aber vor nem grossen Testlauf auf meinem ROOT muss ich noch dieses kleine Problem fixen, irgendwie...

    [autoit]

    Case $game = "ts3"
    GUICtrlCreateLabel("Welcher Art soll der Server angehören?" ,30,100)
    $input1 = GUICtrlCreateInput($game, 350, 95, 200)
    GUICtrlCreateLabel("Wie soll der Name des Buttons lauten?" ,30,140)
    $input2 = GUICtrlCreateInput($name, 350, 135,200)
    GUICtrlCreateLabel("Welchen Port soll der Server nutzen?" ,30,180)
    $input5 = GUICtrlCreateInput($port, 350, 175, 200)
    GUICtrlCreateLabel("Nenn mir den Pfad zur Server.exe!" ,30,220)
    $input10 = GUICtrlCreateInput($pfad, 350, 215, 200)
    GUICtrlCreateLabel("Nenn mir den Namen der Server.exe!" ,30,260)
    $input11 = GUICtrlCreateInput($exe, 350, 255, 200)
    EndSelect
    EndSelect
    If $takeover Then
    writetoini()
    EndIf
    EndFunc
    Func writetoini()
    $read1=GUICtrlRead($input1)
    IniWrite($inix, "welches Game", "welches Game", $read1)
    $read2=GUICtrlRead($input2)
    IniWrite($inix, "Name des Buttons", "Name des Buttons", $read2)
    $read3=GUICtrlRead($input3)
    IniWrite($inix, "Manu Admin Mod nutzen", "Manu Admin Mod nutzen", $read3)
    $read4=GUICtrlRead($input4)
    IniWrite($inix, "Pfad zu MAM", "Pfad zu MAM", $read4)
    $read5=GUICtrlRead($input5)
    IniWrite($inix, "Port", "Port", $read5)

    [/autoit]

    Die Variable $takeover ist ein Button, der bei Klick die Werte der Input-Felder in die INI schreiben soll.

    Wie gesagt, ist nur ein Ausschnitt. Es wurde eine 2. GUI erstellt, hat je nach Situation aus vorheriger Funktion verschiedene Labels und unterschiedliche Anzahl an Input-Feldern.
    Die Eingaben, die ich in den Input-Feldern mache, sollen in eine INI gespeichert werden. Davon hab ich 10 stück an der Zahl. Die richtige INI wird mir durch vorherige Funktionen bereitgestellt und auch die Einträge funktionieren fast perfekt. Die Sektionen und Schlüssel werden in die richtige INI geschrieben aber die Werte aus den Inputboxen werden einfach nicht eingetragen! Nur ab und an mal ne Null bei einer Sektion, die nicht durch ein Input-Feld geändert werden soll. Das ist aber okay, da im weiteren Verlauf diese Einträge keine Rolle spielen. Aber:

    Warum zum Henker werden Variablen der Input-Felder nicht in die INI geschrieben?
    Diese Varianten funktionieren nicht:

    [autoit]

    $read1=GUICtrlRead($input1)
    IniWrite("beispiel.ini","texte","say1", $read1)

    [/autoit][autoit][/autoit][autoit]

    ;oder
    IniWrite("beispiel.ini","texte","say1", GUICtrlRead($input1))

    [/autoit][autoit][/autoit][autoit]

    ;oder hab auch auf die letzt genannte Funktion verzichtet, ohne Erfolg...

    [/autoit]


    Was muss ich anders machen??

  • Hallo Lottich,

    es könnte daran liegen, dass deine $read*-Variablen nicht global sind. Das heißt, die können in einer anderen Funktion gar nicht ausgelesen werden.
    Setze doch zum Test oben am Programmanfang "Global $read1" und schau, obs klappt.

    Die Anna :*

    "Wo kämen wir hin, wenn jeder sagte wo kämen wir hin, und niemand ginge, um zu sehen, wohin wir kämen, wenn wir gingen..." :wacko:

  • Hallo ihr beiden.

    Arrays machen bei mir keinen Sinn, weil ich einfach zu viele verschiedene Variablen habe, die in mehreren Funktionen verwendet werden sollen. insgesammt beläuft sich mein kleines Script momentan mit 47 Funktionen auf 3680 Zeilen und diese sind fast alle mit select/case und darin noch mit if und elseif verschachtelt. Würd ich da auch noch mit arrays arbeiten, käm ich ja gar nicht mehr klar :D

    Zum Thema Global
    Ich hab bei mir die opt must declare vars auf 1 gesetzt. demzufolge sind alle Variablen mit Local versehen. und da klappts doch auch mit den "Wert übertragungen"...
    Aber ich werd das gleich mal testen

    Nachtrag:
    Das mit dem Global kann es eigentlich nicht sein, weil:
    wenn ich (innerhalb dieser Funktion) auf einen anderen Button klicke, wo schon Einträge in einer anderen INI vorhanden sind, dann wird mir das in den Input-Feldern
    vorgegeben, das Lesen funzt mit Local, und das Schreiben ja eigentlich auch, denn mir wird von diesem Code

    [autoit]

    IniWrite($inix,"Name des Buttons","Name des Buttons", GUICtrlRead($input1))

    [/autoit]

    folgendes in die INI (wo es dann auch rechtmässig rein soll, habe 10 INI´s) geschrieben

    Code
    [Name des Buttons]
    Name des Buttons=

    Und ich kann machen was ich will, er schreibt mir einfach nicht das in die INI, was ich in dem Inputfeld reingeschrieben hab.

  • Mach doch einfach kurz in deine Funktion eine Msgbox, die dir den Wert des Inputs und die gelesene Variable ausgibt. So könntest du schonmal ausschließen, dass es keines der beiden Sachen ist:

    [autoit]

    MsgBox(0, $input1, $read1)

    [/autoit]
    • Offizieller Beitrag

    Ich glaube deine Problem liegt an der deklaration der Variablen, wie schon erwähnt.
    Du willst innerhalb einer Funktion deine Ini Schreiben und diese Funktion muß die Variablen auch kennen.
    Wenn die Controls innerhalb einer Funktion erstellt werden und dann in einer anderen Funktion ausgelesen wenden sollen,
    müssen sie entweder Global definiert sein oder der Funktion als Parameter übergeben werden.

    Ob es an der Variablendeklarartion liegt kannst du leicht mit einem ConsoleWrite überprüfen, lasse dir die Werte einfach mal ausgeben.
    Den Sinn der 10 Ini Dateine ist mir auch entgangen. Warum nicht alles in 1 Ini-Datei?

  • Zweck den mein Programm erfüllen soll:

    Es handelt sich um eine Benutzeroberfläche, die meine Clanserver überwacht (neu starten wenn sie abschmieren, automatisch bereinigen, und quasi alles machen, was ich sonst per hand erledigen muss. Das Programm läuft auch schon einwandfrei in der Version 1.6, allerdings ist das Maßgeschneidert und verträgt KEINE Änderungen, und unterstützt nur die im Quellcode hinterlegten Server/Teamspeak. Schreibt mir Logs, behebt Fehlermeldungen, die bei manchen Server unerwartet und unregelmässig auftauchen, mir auch anzeigt, welche Gameserver überwacht werden und welche nicht, und und und.

    Aber es ist nicht flexibel genug.
    Also muss ne neue Version her. Eine, die so Flexibel ist, dass ich nur noch INI die Pro Server bearbeiten brauch. Das funktioniert auch. Bisher hatte ich das so, dass mir die übergebene
    Server.ini mit notepad++ geöffnet wurde, aber da die INI mehrere Sektionen hat (von denen je nach Situation nicht alle gebraucht werden) und nicht nur ich auf das Programm zugreifen werde, ist es doch klüger, über eine GUI mit Input-Felder nur jene "benötigten Eingaben" aufzulisten, die gerade gebraucht werden.

    Ich bin es vorher auch theoretisch durchgegangen und mit den gesammelten Erkenntnissen aus der momentan aktuellen Version 1.6 ist es am sinnvollsten mit mehreren INI´s zu arbeiten, das erleichtert die Arbeit mit dem Übergeben der Variablen.
    Mag sein und ist auch wahrscheinlich, dass ihr viel mehr auf dem Kasten habt als ich, aber ich arbeite erst seit gut 2 Monaten mit autoit und hab vorher auch noch nie sowas in der Richtung gemacht. Sicher kriegt ihr mein gesammten Code viel kleiner hin als ich, aber ich bin sehr zufrieden mit dem, was ich bisher gebaut hab.

    zurück zum Thema

    Ich übergebe alle nötigen Parameter.
    also, dass passiert:
    Ich starte das Programm, es entsteht eine GUI mit 10 Buttons, die jeweils für einen möglichen Gameserver stehen. bei Klick auf einen Button wird die entsprechende INI ausgelesen und eine neue "Button-Gruppe" erstellt. die ausgelesenen Parameter werden an diese Gruppe weiter gegeben. In dieser Gruppe befindet sich auch ein Edit-Button der mir eine neue GUI aufmacht, mit den Daten der entsprechenden INI als Vorgabe in den Input-Feldern.
    Das tut es auch einwandfrei.

    Will ich dann etwas ändern, oder ich hab zu beginn auf einen Button geklickt, der noch keine Einträge in der INI hat, dann muss/soll/will ich ja die Eingaben in den Inputfeldern machen. nachdem ich die Eingaben gemacht hab klick ich auf den Button "Übernehmen" der die Funktion aufruft, in der die Eingaben der Inputfelder in die besagte INI reinschreibt.

    Und er macht auch die Einträge. Es werden in der dem Button zugehörenden INI die korrekten Sektionen und Schlüssel eingetragen, Nur nicht die Werte aus den Inputfeldern.
    Also stimmt doch eigentlich soweit alles mit dem Parameter übergeben. Die Variablen für die Iputfelder sind auch deklariert, sonst hätte mir das der Syntax-Check doch bemängelt.

    Allerdings frage ich bei einem "freien Button" per Input-Box ab, welcher Art der Gameserver sein soll. Dieser Wert wird komischerweise eingetragen.


    Nachtrag:

    Jetzt hab ich es endlich.... ich hab vergessen dem Button "Übernehmen" die Funktion zum INIschreiben zuzuweisen. Dachte es würde reichen

    [autoit]

    If $takeover Then writetoini()

    [/autoit]


    War offensichtlich ein Trugschluss. Jetzt hab ich aber wieder das Problem, dass $inix die letzte Server.ini ist und nicht mehr die, des gedrückten Serverbuttons. Das is doch zum Mäuse melken.

    • Offizieller Beitrag

    Scheinbar willst du Romanautor werden, wenn ich mir das ganze getippe ansehe.

    Wenn du wirklich Hilfe haben willst und das ganze nicht noch Tage dauern soll, dann poste das ganze Script.
    Kein Mensch weiß woher die Variable $inix kommt und wie oder wo du deren Wert zuweist.
    Wenn dein Script nicht gerade 2000 Zeilen umfaßt, reicht meist ein kurzer Blick ins Script und die Fehler zu tilgen.

  • Okay,

    Ich hab jetzt alles nötige zusammengefasst.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <EditConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Prüft, ob das Programm bereits läuft. Lässt nur 1 Instanz zu.
    $instanz = "kdsvkais"
    If WinExists ($instanz) Then Exit
    AutoItWinSetTitle ($instanz)

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Scriptoptionen.
    Opt("GUIOnEventMode", 1)
    Opt('MustDeclareVars', 1)
    Opt("WinTitleMatchMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $colorbackground = 0x4A82B5
    Local $colorblack = 0x000000
    Local $colorstatic = 0xFFF000
    Local $font = "Comic Sans MS"
    Local $titel = "TEST Serverwatcher"
    Local $ini1 = @ScriptDir & "\test1.ini"
    Local $ini2 = @ScriptDir & "\test2.ini"
    Local $mainwindow, $buttonname, $buttonserver1, $checkmanumod, $buttonserver1mam, $inix, $name, $mamname
    Local $pfad, $game, $port, $config, $exe, $pb, $rcon, $mod, $plmax, $plprv, $message, $start
    Local $header, $starten, $stoppen, $restart, $opendir, $editme, $back, $iniwindow, $inibuttonback, $takeover
    Local $input1, $input2, $input3, $input4, $input5, $input6, $input7, $input8, $input9, $input10, $input11, $input12, $input13

    [/autoit] [autoit][/autoit] [autoit]

    guicreation()
    Func guicreation() ; Benutzeroberfläche wird erstellt.
    $mainwindow = GUICreate ("IFA Serverwatcher v2.0 in Entwicklung", 800, 600,0,0)
    GUISetState (@SW_SHOW)
    GUISetOnEvent ($GUI_EVENT_CLOSE, "ProgrammBeenden")
    GUISetBkColor ($colorbackground)
    GUICtrlSetDefColor ($colorblack)
    GUISetFont (40, 400, 4, $font)
    GUICtrlCreateLabel ($titel, 40, 20)
    GUISetFont (11, 400, 0, $font)
    GUICtrlSetDefBkColor($colorstatic)
    buttons()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func buttons() ; Serverbuttons werden erstellt und Funktionen werden zugewiesen.
    GUISwitch($mainwindow)
    $buttonname = IniRead($ini1,"Name des Buttons","Name des Buttons", "...noch frei...")
    $buttonserver1 = GUICtrlCreateButton($buttonname, 40,100,150)
    $buttonname = _GUICtrlButton_GetText($buttonserver1)
    $checkmanumod = IniRead($ini1,"Manu Admin Mod nutzen","Manu Admin Mod nutzen", "")
    If $checkmanumod= "ja" Then $buttonserver1mam = GUICtrlCreateButton("MAM " & $buttonname, 200,100,180)
    If $buttonname = "" Then GUICtrlDelete ($buttonserver1)
    If $buttonname = "" Then GUICtrlDelete ($buttonserver1mam)
    GUICtrlSetOnEvent($buttonserver1, "server1")
    GUICtrlSetOnEvent($buttonserver1mam, "mamserver1")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func server1() ; Verhalten des Serverbuttons, Prüft den Gametype und liest Infos aus. Leitet weiter an Funktion "buttonscreate".
    GUISwitch($mainwindow)
    buttonsdelete()
    $inix = $ini1
    $name = IniRead($inix, "Name des Buttons", "Name des Buttons","")
    $pfad = IniRead($inix, "Pfad zur Exe", "Pfad zur Exe","")
    $game = IniRead($inix, "welches Game", "welches Game","")
    $port = IniRead($inix, "Port", "Port","")
    $config = IniRead($inix, "Name der Serverconfig", "Name der Serverconfig","")
    $exe = IniRead($inix, "Name der Exe", "Name der Exe","")
    $pb = IniRead($inix, "Punkbuster", "Punkbuster","")
    $rcon = IniRead($inix, "Passwort RCon", "Passwort RCon","")
    $mod = IniRead($inix, "Name des Mods", "Name des Mods","")
    $plmax = IniRead($inix, "Maximale Spielerzahl", "Maximale Spielerzahl","")
    $plprv = IniRead($inix, "Anzahl Private Slots", "Anzahl Private Slots","")
    $message= $name & " ist bereits gestartet."
    If $game = "cod4" Then

    ; Hier mit If/ElseIf mit einer Select/Case Verschachtelung um die Variable $start mit den richtigen Parametern zu versehen
    ; Es wird mit den oben ausgelesenen Variablen jongliert

    EndIf
    IniWrite($inix, "Startparameter", "Startparameter", $start)
    buttonscreate()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func mamserver1() ; Liest Infos des Manumods und leitet diese weiter an Funktion "buttonscreate2".
    GUISwitch($mainwindow)
    buttonsdelete()
    $inix = $ini1
    $name = IniRead($inix, "Name des Buttons", "Name des Buttons","")
    $mamname= "MAM " & $name
    $pfad = IniRead($inix, "Pfad zu MAM", "Pfad zu MAM", "")
    $message= $mamname & " ist bereits gestartet."
    buttonscreate2()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func buttonscreate() ; erstellt "Aktionsgruppe" zur Serverkontrolle eines Serverbuttons.
    $header = GUICtrlCreateGroup ($name, 400, 150, 200, 340)
    $starten = GUICtrlCreateButton("starten", 450, 185, 100)
    $stoppen = GUICtrlCreateButton("stoppen", 450, 225, 100)
    $restart = GUICtrlCreateButton("restart", 450, 265, 100)
    $opendir = GUICtrlCreateButton("öffne Ordner", 450, 325, 100)
    $editme = GUICtrlCreateButton("bearbeiten", 450, 365, 100)
    $back = GUICtrlCreateButton("zurück ", 450, 425, 100)
    ;~ GUICtrlSetOnEvent($starten, "serverstarten")
    ;~ GUICtrlSetOnEvent($stoppen, "serverstoppen")
    ;~ GUICtrlSetOnEvent($restart, "serverrestart")
    ;~ GUICtrlSetOnEvent($opendir, "openserver")
    GUICtrlSetOnEvent($editme, "openini")
    GUICtrlSetOnEvent($back, "buttonsdelete")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func buttonscreate2() ; erstellt "Aktionsgruppe" zur Serverkontrolle eines ManuMod-Buttons.
    $header = GUICtrlCreateGroup ($mamname, 400, 150, 200, 340)
    $starten = GUICtrlCreateButton("starten", 450, 185, 100)
    $stoppen = GUICtrlCreateButton("stoppen", 450, 225, 100)
    $restart = GUICtrlCreateButton("restart", 450, 265, 100)
    $opendir = GUICtrlCreateButton("öffne Ordner", 450, 325, 100)
    $back = GUICtrlCreateButton("zurück ", 450, 425, 100)
    ;~ GUICtrlSetOnEvent($starten, "mamserverstarten")
    ;~ GUICtrlSetOnEvent($stoppen, "mamserverstoppen")
    ;~ GUICtrlSetOnEvent($restart, "mamserverrestart")
    ;~ GUICtrlSetOnEvent($opendir, "openserver")
    GUICtrlSetOnEvent($back, "buttonsdelete")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func openini() ; Übernimmt Daten des gedrückten Buttons und öffnet die INI des gewählten Servers / ManuMods.
    $iniwindow = GUICreate($name,600,600,803,0)
    GUISetState (@SW_SHOW)
    GUISetOnEvent ($GUI_EVENT_CLOSE, "ProgrammBeenden2")
    GUISetBkColor ($colorbackground)
    $inibuttonback = GUICtrlCreateButton("Abbruch",50,550, 100)
    $takeover = GUICtrlCreateButton("übernehmen",450, 550, 100)
    GUICtrlSetOnEvent($inibuttonback, "ProgrammBeenden2")
    GUICtrlSetOnEvent($takeover, "writetoini")
    GUISetFont (11, 400, 0, $font)
    Select
    Case $game = "ts3"
    GUICtrlCreateLabel("Welcher Art soll der Server angehören?" ,30,100)
    $input1 = GUICtrlCreateInput($game, 350, 95, 200)
    GUICtrlCreateLabel("Wie soll der Name des Buttons lauten?" ,30,140)
    $input2 = GUICtrlCreateInput($name, 350, 135,200)
    GUICtrlCreateLabel("Welchen Port soll der Server nutzen?" ,30,180)
    $input5 = GUICtrlCreateInput($port, 350, 175, 200)
    GUICtrlCreateLabel("Nenn mir den Pfad zur Server.exe!" ,30,220)
    $input10 = GUICtrlCreateInput($pfad, 350, 215, 200)
    GUICtrlCreateLabel("Nenn mir den Namen der Server.exe!" ,30,260)
    $input11 = GUICtrlCreateInput($exe, 350, 255, 200)

    Case Else
    $game = InputBox("Serverart wählen...", "Welcher Natur soll der Server werden?")
    Select
    Case $game = "ts3"
    GUICtrlCreateLabel("Welcher Art soll der Server angehören?" ,30,100)
    $input1 = GUICtrlCreateInput($game, 350, 95, 200)
    GUICtrlCreateLabel("Wie soll der Name des Buttons lauten?" ,30,140)
    $input2 = GUICtrlCreateInput($name, 350, 135,200)
    GUICtrlCreateLabel("Welchen Port soll der Server nutzen?" ,30,180)
    $input5 = GUICtrlCreateInput($port, 350, 175, 200)
    GUICtrlCreateLabel("Nenn mir den Pfad zur Server.exe!" ,30,220)
    $input10 = GUICtrlCreateInput($pfad, 350, 215, 200)
    GUICtrlCreateLabel("Nenn mir den Namen der Server.exe!" ,30,260)
    $input11 = GUICtrlCreateInput($exe, 350, 255, 200)
    EndSelect
    EndSelect
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func writetoini() ; Schreibt die nötigen Einträge in die INI.
    IniWrite($inix, "welches Game", "welches Game", GUICtrlRead($input1))
    IniWrite($inix, "Name des Buttons", "Name des Buttons", GUICtrlRead($input2))
    IniWrite($inix, "Manu Admin Mod nutzen", "Manu Admin Mod nutzen", GUICtrlRead($input3))
    IniWrite($inix, "Pfad zu MAM", "Pfad zu MAM", GUICtrlRead($input4))
    IniWrite($inix, "Port", "Port", GUICtrlRead($input5))
    IniWrite($inix, "Punkbuster", "Punkbuster", GUICtrlRead($input6))
    IniWrite($inix, "Name des Mods", "Name des Mods", GUICtrlRead($input7))
    IniWrite($inix, "Name der Serverconfig", "Name der Serverconfig", GUICtrlRead($input8))
    IniWrite($inix, "Passwort RCon", "Passwort RCon", GUICtrlRead($input9))
    IniWrite($inix, "Pfad zur Exe", "Pfad zur Exe", GUICtrlRead($input10))
    IniWrite($inix, "Name der Exe", "Name der Exe", GUICtrlRead($input11))
    IniWrite($inix, "Maximale Spielerzahl", "Maximale Spielerzahl", GUICtrlRead($input12))
    IniWrite($inix, "Anzahl Private Slots", "Anzahl Private Slots", GUICtrlRead($input13))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ProgrammBeenden() ; Beendet das Programm und alle laufenden Funktionen
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ProgrammBeenden2() ; Beendet die 2. GUI
    GUIDelete($iniwindow)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func buttonsdelete() ; Entfernt die "Aktionsgruppe" zur Serverkontrolle. Wichtig für die Übersicht.
    GUICtrlDelete($header)
    GUICtrlDelete($starten)
    GUICtrlDelete($stoppen)
    GUICtrlDelete($restart)
    GUICtrlDelete($opendir)
    GUICtrlDelete($editme)
    GUICtrlDelete($back)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Funktion: Verhalten dieses Programms während es gestartet ist.
    While 1
    ;~ safemode()
    ;~ watch()
    ;~ checker()
    ;~ cleaner()
    Sleep(10000)
    WEnd

    [/autoit]


    Die Variable $inix wird übergeben, sobald auf den Button geklickt wird, genau wie alle andern Variablen auch.
    Als Test kann man sich ja mal ne test.ini anlegen , das Script starten und bei der Eingabe ts3 eintippen.

    • Offizieller Beitrag

    Dein Scipt speichert doch die Werte in der INI Datei. ;)

  • Joa, jetzt scheint alles zu funktionieren.

    Den Fehler, dass jetzt alle Einträge in die letzte INI geschrieben wurden konnte ich beheben, indem ich einfach

    $ini = $inix

    als Parameter an die Funktion writetoini() aus der Funktion davor übergeben hab.
    Das scheint jetzt alles so zu klappen, wie es soll, nun könnte ich einen ersten Testlauf machen, aber nicht am Wochenende. Da soll alles laufen.

    Danke für eure Hilfe. Ich werd mich sicher nochmal melden, denn es ist whrscheinlich, dass ich irgendwo nen Error eingebaut hab xD.