Hilfe zur erstellung einer Import/Export Funktion aus/in eine INI

  • Hallo zusammen,

    nun nachdem das Script von mir dank der super Arbeit einiger Leute hier soweit fertig ist, fehlt mir nur noch eine Function bei der ich aber von Anfang an Hilfe brauche denn ich weiss nicht mal so recht wie und ich hierfür ansetzen muss!

    Erklährung was diese Funktion machen soll! (Vorwort)

    Also bei diesem Programm erstellt man sich Accounts, speichert deren Lagerorte und das was sich in den Lagern befindet (funzt ja nun alles).
    Hier die INI wie sie aussieht:

    Spoiler anzeigen


    Nun giebt es diese aber auch als Gildenlager Function die extra ausgeführt und auch in einer separaten INI gespeichert wird, da wie gesagt das eine eigene Accounts und das andere Gildenlager Accounts sind.
    Damit alle auf dem neusten Stand sind gibt es nun einen der die Läger verwaltet, alles neue einträgt und alles was raus ist entfert. Damit nun immer alle auf dem selben Stand sind schickt dieser Verwalter in gewissen Zeitabständen den Gildenmembern immer die aktuelle INI zu.
    Nun sagt ihr bestimmt ersezt diese doch einfach mit der vorhanden, aber stop das geht nicht denn manche Member machen neben den offiziellen noch eigene Gildenlager die sie dann ggf. zur verfügung stellen.

    Also lange Rede kurzer Sinn:
    Es soll zwei Funktionen geben 1.Import und 2.Export.

    1.Import:
    hier soll es so sein das die geschickte ini (sagen wir sie heisst lagerimport.ini) kommplett ausgelesen mit der vorhandenen
    (heist gildendata.ini) verglichen wird. Nicht vorhandenes dann eben in die gildendata.ini eingetragen wird, aber wenn ein Accountname schonmal vorhanden ist soll eine msgBox kommen mit der Frage ob die Daten überschrieben werden sollen und mit Ja/nein bestätigt werden müssen. Nach abschluss des Eintragens soll die lagerimport.ini dann gelöscht werden.

    2.Export:
    Wird dieser Button gedrückt soll die vorhandene gildendata.ini ausgelesen und als lagerimport.ini wieder gespeichert werden die dann eben vom verwalter verschickt wird! Ist diese beim speichern schon vorhanden soll auch die Abfrage des Überschreibens ja/nein kommen!

    Hier noch der Programmcode mit dem Gildenlager (geht nur von der Front aus). Die ini mus zum testen gildendata.ini heissen!

    Spoiler anzeigen
    [autoit]

    #region INCLUDES
    ;------------------------------------------------------------------------------------------
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #endregion INCLUDES
    #region GLOBAL
    ;------------------------------------------------------------------------------------------
    Global $aschliesfach[17][4]
    Global $aLager[13][3]
    Global $aGildenLager[13][3]
    Global $userSelection=-1 ; noch wurde garnichts gewählt, programmstart
    Global $DataINI = 'data.ini'
    Global $GildenDataINI = 'gildendata.ini'
    #endregion GLOBAL
    ;------------------------------------------------------------------------------------------
    #region GUI
    $Form1 = GUICreate("Form1", 940, 550, 192, 5, $WS_BORDER & $WS_POPUP)
    ;GUISetState()
    $Backround = GUICtrlCreatePic("bilder\lager.tgx", 0, 0, 940, 550)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $rightLabel = GUICtrlCreateLabel("Copyright By Ghostleader @ Areneas", 650, 500, 300, 25)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion GUI
    ;------------------------------------------------------------------------------------------
    #region Group´s
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $FrontLagerBank = GUICtrlCreateGroup("", 360, 120, 280, 255)
    $GroupCombo = GUICtrlCreateGroup("", 10, 6, 276, 36)
    $GroupAccountNeu = GUICtrlCreateGroup("", 302, 6, 121, 36)
    $GroupSpeichern = GUICtrlCreateGroup("", 440, 6, 235, 36)
    $Exit = GUICtrlCreateGroup("", 685, 6, 238, 36)
    $LagerLabelGroup = GUICtrlCreateGroup("", 330, 135, 282, 45)
    $LagerGroup = GUICtrlCreateGroup("", 200, 62, 590, 45)
    $LagerSpalte1 = GUICtrlCreateGroup("", 70, 195, 190, 290)
    $LagerSpalte2 = GUICtrlCreateGroup("", 345, 195, 190, 290)
    $LagerSpalte3 = GUICtrlCreateGroup("", 615, 195, 190, 290)
    $BankRahmen1 = GUICtrlCreateGroup("", 30, 112, 190, 370)
    $BankRahmen2 = GUICtrlCreateGroup("", 270, 112, 190, 370)
    $BankRahmen3 = GUICtrlCreateGroup("", 500, 112, 190, 370)
    $BankRahmen4 = GUICtrlCreateGroup("", 730, 112, 190, 370)
    #endregion Group´s
    ;------------------------------------------------------------------------------------------
    #region Button´s
    $AccountNeu = GUICtrlCreateButton("Neuer Account", 310, 16, 105, 22)
    $GildenAccountNeu = GUICtrlCreateButton("Neuer Account", 310, 16, 105, 22)
    $Lager1Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $Lager2Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $Lager3Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $GildenLager1Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $GildenLager2Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $GildenLager3Speichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $SchliessfachSpeichern = GUICtrlCreateButton("Speichern", 448, 16, 105, 22)
    $AccLoschen = GUICtrlCreateButton("Acc Löschen", 565, 16, 105, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachOben = GUICtrlCreateButton("Bankschließfach", 695, 16, 105, 22)
    $ButtonExit = GUICtrlCreateButton("Exit", 810, 16, 105, 22)
    ;------------------------------------------------------------------------------------------
    $SchliessfachLoschen = GUICtrlCreateButton("Schliesfach Löschen", 565, 16, 105, 22)
    $LagerOben = GUICtrlCreateButton("Lagerverwaltung",695, 16, 105, 22)
    ;------------------------------------------------------------------------------------------
    $GildeFront = GUICtrlCreateButton("Gildenlager", 375, 140, 250, 40)
    $LagerFront = GUICtrlCreateButton("Lagerverwaltung", 375, 200, 250, 40)
    $SchliessfachFront = GUICtrlCreateButton("Bankschließfach", 375, 260, 250, 40)
    $Schliessen = GUICtrlCreateButton("Programm Schliessen", 375, 320, 250, 40)
    ;------------------------------------------------------------------------------------------
    $Lager1 = GUICtrlCreateButton("LAGER 1", 210, 75, 170, 25)
    $Lager2 = GUICtrlCreateButton("LAGER 2", 410, 75, 170, 25)
    $Lager3 = GUICtrlCreateButton("LAGER 3", 610, 75, 170, 25)
    $GildenLager1 = GUICtrlCreateButton("LAGER 1", 210, 75, 170, 25)
    $GildenLager2 = GUICtrlCreateButton("LAGER 2", 410, 75, 170, 25)
    $GildenLager3 = GUICtrlCreateButton("LAGER 3", 610, 75, 170, 25)
    #endregion Button´s
    ;------------------------------------------------------------------------------------------
    #region Combo´s
    $ComboUser = GUICtrlCreateCombo("", 100, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; ein combo reicht völlig
    _setCombo($ComboUser,1) ; NEU: erledigt alles, returned nichts :P, Parameter 1 bedeutet gui initialisierung, wert 1 der ini wird ausgewählt
    $ComboUser1 = GUICtrlCreateCombo("", 100, 16, 170, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; ein combo reicht völlig
    _setCombo1($ComboUser1,1) ; NEU: erledigt alles, returned nichts :P, Parameter 1 bedeutet gui initialisierung, wert 1 der ini wird ausgewählt
    #endregion Combo´s
    ;------------------------------------------------------------------------------------------
    #region Label´s
    $LagerLabel1 = GUICtrlCreateLabel("", 340, 150, 100, 25)
    GUICtrlSetFont(-1, 15, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $Label4 = GUICtrlCreateLabel("Account", 22, 17, 80, 19)
    GUICtrlSetFont(-1, 11, 600)
    GUICtrlSetColor(-1, 000000)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    #endregion Label´s
    ;---------------------------------------------------------------------------------------------
    #region Input
    $inputLager = GUICtrlCreateInput("", 430, 150, 170, 21)
    #endregion Input
    ;---------------------------------------------------------------------------------------------
    #region HIDE
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($GroupAccountNeu, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($ButtonExit, $GUI_HIDE)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($GildenLager1, $GUI_HIDE)
    GUICtrlSetState($GildenLager2, $GUI_HIDE)
    GUICtrlSetState($GildenLager3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_HIDE)
    GUICtrlSetState($inputLager, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    GUICtrlSetState($ComboUser1, $GUI_HIDE)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    GUICtrlSetState($AccountNeu, $GUI_HIDE)
    GUICtrlSetState($GildenAccountNeu, $GUI_HIDE)
    #endregion HIDE
    ;----------------------------------------------------------------------------------------------
    #region Generat´s
    _generateControls($aLager,"Lager")
    _generateControls($aschliesfach,"Schliessfach")
    _generateControls($aGildenLager,"GildenLager")
    #endregion Generat´s
    GUISetState(@SW_SHOW)
    ;---------------------------------------------------------------------------------------------
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $SchliessfachFront, $SchliessfachOben
    $userSelection = 0
    _ButtonSchliessfach()
    Case $LagerFront, $LagerOben
    $userSelection = 1
    _clearkommplettGUI()
    _ButtonLager1()
    Case $Lager1
    $userSelection = 1
    _ButtonLager1()
    Case $Lager2
    $userSelection = 2
    _ButtonLager2()
    Case $Lager3
    $userSelection = 3
    _ButtonLager3()
    Case $GildeFront
    $userSelection = 1
    _clearkommplettGUI()
    _GildenLager1()
    Case $GildenLager1
    $userSelection = 1
    _GildenLager1()
    Case $GildenLager2
    $userSelection = 2
    _GildenLager2()
    Case $GildenLager3
    $userSelection = 3
    _GildenLager3()
    Case $AccountNeu
    _clearkommplettGUI()
    Case $GildenAccountNeu
    _clearkommplettGUI()
    Case $ButtonExit, $Schliessen
    Exit
    Case $ComboUser ; umbenannt
    _clearGUI()
    if $userSelection = 0 Then _LoadData($aschliesfach,"Schliessfach",$userSelection)
    if $userSelection > 0 Then _LoadData($aLager,"Lager",$userSelection)
    Case $ComboUser1
    _clearGUI()
    if $userSelection > 0 Then _LoadData1($aGildenLager,"GildenLager",$userSelection)
    Case $GildenLager1Speichern
    _SaveData1($aGildenLager,"GildenLager",1) ; neu
    Case $GildenLager2Speichern
    _SaveData1($aGildenLager,"GildenLager",2) ; neu
    Case $GildenLager3Speichern
    _SaveData1($aGildenLager,"GildenLager",3) ; neu
    Case $Lager1Speichern
    _SaveData($aLager,"Lager",1) ; neu
    Case $Lager2Speichern
    _SaveData($aLager,"Lager",2) ; neu
    Case $Lager3Speichern
    _SaveData($aLager,"Lager",3) ; neu
    Case $SchliessfachSpeichern
    _SaveData($aschliesfach,"Schliessfach",0) ; neu
    Case $AccLoschen
    _deleteAccount()
    Case $SchliessfachLoschen
    _deleteSchliessfach()
    EndSwitch
    WEnd
    ;_--------------------------------------------------------------------------------------------
    Func _ButtonSchliessfach()
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_SHOW)
    Next
    Next
    _clearkommplettGUI()
    GUICtrlSetState($GildenAccountNeu, $GUI_HIDE)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($GroupAccountNeu, $GUI_HIDE)
    GUICtrlSetState($AccountNeu, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte2, $GUI_HIDE)
    GUICtrlSetState($LagerSpalte3, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerOben, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_HIDE)
    GUICtrlSetState($inputLager, $GUI_HIDE)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($ComboUser1, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($BankRahmen1, $GUI_SHOW)
    GUICtrlSetState($BankRahmen2, $GUI_SHOW)
    GUICtrlSetState($BankRahmen3, $GUI_SHOW)
    GUICtrlSetState($BankRahmen4, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_HIDE)
    _clearGUI(); felder leeren beim wechsel
    _LoadData($aschliesfach,"Schliessfach",0) ; felder neu befüllen
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager1()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($GildenAccountNeu, $GUI_HIDE)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 1")
    GUICtrlSetState($GroupAccountNeu, $GUI_SHOW)
    GUICtrlSetState($AccountNeu, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser1, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",1) ; felder neu befüllen
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _ButtonLager2()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($GildenAccountNeu, $GUI_HIDE)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 2")
    GUICtrlSetState($GroupAccountNeu, $GUI_SHOW)
    GUICtrlSetState($AccountNeu, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_SHOW)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser1, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_SHOW)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",2) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _ButtonLager3()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($GildenAccountNeu, $GUI_HIDE)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 3")
    GUICtrlSetState($GroupAccountNeu, $GUI_SHOW)
    GUICtrlSetState($AccountNeu, $GUI_SHOW)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_SHOW)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_SHOW)
    GUICtrlSetState($SchliessfachOben, $GUI_SHOW)
    GUICtrlSetState($AccLoschen, $GUI_SHOW)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser1, $GUI_HIDE)
    GUICtrlSetState($ComboUser, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_SHOW)
    GUICtrlSetState($Lager2, $GUI_SHOW)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData($aLager,"Lager",3) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _GildenLager1()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aGildenLager,2)-1
    For $i=1 To UBound($aGildenLager)-1
    GUICtrlSetState($aGildenLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 1")
    GUICtrlSetState($GildeFront, $GUI_HIDE)
    GUICtrlSetState($GildenAccountNeu, $GUI_SHOW)
    GUICtrlSetState($GildenLager1Speichern, $GUI_SHOW)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager1, $GUI_HIDE)
    GUICtrlSetState($GildenLager2, $GUI_SHOW)
    GUICtrlSetState($GildenLager3, $GUI_SHOW)
    GUICtrlSetState($GroupAccountNeu, $GUI_HIDE)
    GUICtrlSetState($AccountNeu, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    GUICtrlSetState($ComboUser1, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData1($aGildenLager,"GildenLager",1) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _GildenLager2()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aGildenLager,2)-1
    For $i=1 To UBound($aGildenLager)-1
    GUICtrlSetState($aGildenLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 2")
    GUICtrlSetState($GildeFront, $GUI_HIDE)
    GUICtrlSetState($GildenAccountNeu, $GUI_SHOW)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_SHOW)
    GUICtrlSetState($GildenLager3Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager1, $GUI_SHOW)
    GUICtrlSetState($GildenLager2, $GUI_HIDE)
    GUICtrlSetState($GildenLager3, $GUI_SHOW)
    GUICtrlSetState($GroupAccountNeu, $GUI_HIDE)
    GUICtrlSetState($AccountNeu, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    GUICtrlSetState($ComboUser1, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData1($aGildenLager,"GildenLager",2) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _GildenLager3()
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetState($aschliesfach[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetState($aLager[$i][$s],$GUI_HIDE)
    Next
    Next
    For $s=0 to UBound($aGildenLager,2)-1
    For $i=1 To UBound($aGildenLager)-1
    GUICtrlSetState($aGildenLager[$i][$s],$GUI_SHOW)
    Next
    Next
    GUICtrlSetState($SchliessfachLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerOben, $GUI_HIDE)
    GUICtrlSetState($LagerFront, $GUI_HIDE)
    GUICtrlSetState($SchliessfachFront, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($FrontLagerBank, $GUI_HIDE)
    GUICtrlSetState($BankRahmen1, $GUI_HIDE)
    GUICtrlSetState($BankRahmen2, $GUI_HIDE)
    GUICtrlSetState($BankRahmen3, $GUI_HIDE)
    GUICtrlSetState($BankRahmen4, $GUI_HIDE)
    GUICtrlSetState($Schliessen, $GUI_HIDE)
    GUICtrlSetState($SchliessfachSpeichern, $GUI_HIDE)
    GuiCtrlSetData($LagerLabel1, "Lager 3")
    GUICtrlSetState($GildeFront, $GUI_HIDE)
    GUICtrlSetState($GildenAccountNeu, $GUI_SHOW)
    GUICtrlSetState($GildenLager1Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager2Speichern, $GUI_HIDE)
    GUICtrlSetState($GildenLager3Speichern, $GUI_SHOW)
    GUICtrlSetState($GildenLager1, $GUI_SHOW)
    GUICtrlSetState($GildenLager2, $GUI_SHOW)
    GUICtrlSetState($GildenLager3, $GUI_HIDE)
    GUICtrlSetState($GroupAccountNeu, $GUI_HIDE)
    GUICtrlSetState($AccountNeu, $GUI_HIDE)
    GUICtrlSetState($GroupCombo, $GUI_SHOW)
    GUICtrlSetState($GroupSpeichern, $GUI_HIDE)
    GUICtrlSetState($Exit, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte1, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte2, $GUI_SHOW)
    GUICtrlSetState($LagerSpalte3, $GUI_SHOW)
    GUICtrlSetState($ButtonExit, $GUI_SHOW)
    GUICtrlSetState($Lager1Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager2Speichern, $GUI_HIDE)
    GUICtrlSetState($Lager3Speichern, $GUI_HIDE)
    GUICtrlSetState($SchliessfachOben, $GUI_HIDE)
    GUICtrlSetState($AccLoschen, $GUI_HIDE)
    GUICtrlSetState($LagerLabel1, $GUI_SHOW)
    GUICtrlSetState($inputLager, $GUI_SHOW)
    GUICtrlSetState($ComboUser, $GUI_HIDE)
    GUICtrlSetState($ComboUser1, $GUI_SHOW)
    GUICtrlSetState($Label4, $GUI_SHOW)
    GUICtrlSetState($Lager1, $GUI_HIDE)
    GUICtrlSetState($Lager2, $GUI_HIDE)
    GUICtrlSetState($Lager3, $GUI_HIDE)
    GUICtrlSetState($LagerGroup, $GUI_SHOW)
    GUICtrlSetState($LagerLabelGroup, $GUI_SHOW)
    _clearGUI(); felder leeren beim wechsel
    _LoadData1($aGildenLager,"GildenLager",3) ; felder neu befüllen
    EndFunc
    ;-------------------------------------------------------------------------------------------------
    Func _generateControls(ByRef $ArrayToUse,$mode)
    #cs
    Neue Funktion die die generate Funktionen für Lager und Schliessfach ersetzt und alle control ids in 2-Dimensionalen Arrays speichert
    Könnte weiter optimiert werden, da es kaum unterschiede zwischen beiden Modes gibt, wir belassen es jetzt erstmal so...
    #ce
    if $mode = "Lager" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 then $left=1
    if $s=1 then $left=275
    if $s=2 then $left=545
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf
    ;---------------------------------------------------------------------------------------------------
    if $mode = "GildenLager" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 then $left=1
    if $s=1 then $left=275
    if $s=2 then $left=545
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",85+$left,216+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf
    ;---------------------------------------------------------------------------------------------------
    if $mode = "Schliessfach" Then
    For $s=0 to UBound($ArrayToUse,2)-1 ; für alle Spalten
    $Abstand = 2
    if $s=0 Then $left=40
    if $s=1 Then $left=280
    if $s=2 Then $left=510
    if $s=3 Then $left=740
    For $i = 1 To UBound($ArrayToUse)-1 ; für alle Zeilen
    $ArrayToUse[$i][$s] = GUICtrlCreateInput("",5+$left,130+$Abstand,160)
    GUICtrlSetState(-1,$GUI_HIDE)
    $Abstand +=21
    Next
    Next
    EndIf
    EndFunc
    ;------------------------------------------------------------------------------------------
    #region Load Lagerverwaltung
    Func _LoadData(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode="Lager" Then
    $key=$mode & $lagernummer
    GUICtrlSetData($inputLager,IniRead($DataINI,GUICtrlRead($ComboUser),$key & "Ort",""))
    EndIf
    if $mode="Schliessfach" Then $key=$mode
    $value=IniRead($DataINI,GUICtrlRead($ComboUser),$key,"")
    $aTemp=StringSplit($value,"|") ; erstellt array mit den einzelwerten aus dem string im ini key-value
    if (UBound($aTemp)-1)/UBound($ArrayToUse,2) <> UBound($ArrayToUse)-1 Then Return ;MsgBox(0,"Fehler","ini Datei inkompatibel") ; verlässt die Funktion, weil zuviele oder zuwenige einträge in der ini
    ; inputs befüllen
    $j=1
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    GUICtrlSetData($ArrayToUse[$i][$s],$aTemp[$j])
    $j+=1
    Next
    Next
    EndFunc
    #endregion Load Lagerverwaltung
    ;------------------------------------------------------------------------------------------
    #region Load GildenLagerverwaltung
    Func _LoadData1(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode="GildenLager" Then
    $key=$mode & $lagernummer
    GUICtrlSetData($inputLager,IniRead($GildenDataINI,GUICtrlRead($ComboUser1),$key & "Ort",""))
    EndIf
    $value=IniRead($GildenDataINI,GUICtrlRead($ComboUser1),$key,"")
    $aTemp=StringSplit($value,"|") ; erstellt array mit den einzelwerten aus dem string im ini key-value
    if (UBound($aTemp)-1)/UBound($ArrayToUse,2) <> UBound($ArrayToUse)-1 Then Return ;MsgBox(0,"Fehler","ini Datei inkompatibel") ; verlässt die Funktion, weil zuviele oder zuwenige einträge in der ini
    ; inputs befüllen
    $j=1
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    GUICtrlSetData($ArrayToUse[$i][$s],$aTemp[$j])
    $j+=1
    Next
    Next
    EndFunc
    #endregion Load GildenLagerverwaltung
    ;-------------------------------------------------------------------------------------------
    #region Save Lagerverwaltung
    Func _SaveData(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode = "Lager" Then
    $key=$mode & $lagernummer
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key & "Ort",GUICtrlRead($inputLager))
    EndIf
    if $mode = "Schliessfach" Then $key=$mode
    $value=""
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    $value&=GUICtrlRead($ArrayToUse[$i][$s]) & "|"
    Next
    Next
    $value=StringTrimRight($value,1) ; entfernt letzten senkrechten Strich
    IniWrite($DataINI,GUICtrlRead($ComboUser),$key,$value)
    IniWrite($GildenDataINI,GUICtrlRead($ComboUser1),$key,$value)
    _clearGUI()
    EndFunc
    #endregion Save Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    #region Save Lagerverwaltung
    Func _SaveData1(ByRef $ArrayToUse,$mode,$lagernummer)
    if $mode = "GildenLager" Then
    $key=$mode & $lagernummer
    IniWrite($GildenDataINI,GUICtrlRead($ComboUser1),$key & "Ort",GUICtrlRead($inputLager))
    EndIf
    $value=""
    For $s=0 to UBound($ArrayToUse,2)-1
    For $i=1 to UBound($ArrayToUse)-1
    $value&=GUICtrlRead($ArrayToUse[$i][$s]) & "|"
    Next
    Next
    $value=StringTrimRight($value,1) ; entfernt letzten senkrechten Strich
    IniWrite($GildenDataINI,GUICtrlRead($ComboUser1),$key,$value)
    _clearGUI()
    EndFunc
    #endregion Save Lagerverwaltung
    ;-------------------------------------------------------------------------------------------
    Func _deleteAccount()
    IniDelete("data.ini", GUICtrlRead($ComboUser))
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _deleteGildenAccount()
    IniDelete("gildendata.ini", GUICtrlRead($ComboUser))
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($ComboUser)
    $aSections = IniReadSection("data.ini", $sBesitzer) ;sectionname auslesen
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "Schliessfach") Then ;wir überprüfen den Sectionname mit einem regulären Ausdruck (geht auch einfacher mit StringLeft)
    ;~ConsoleWrite($aSections[$i][0] & @crlf)
    IniDelete("data.ini", $sBesitzer, $aSections[$i][0]) ;jeden Key löschen, auf den der reguläre Ausdruck zutrifft
    EndIf
    Next
    _clearGUI()
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _clearGUI()
    GUICtrlSetData($inputLager,'')
    ; neu: alle Schliessfach inputs leer machen
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetData($aschliesfach[$i][$s],"")
    Next
    Next
    ; neu: alle Lager inputs leer machen
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetData($aLager[$i][$s],"")
    Next
    Next
    ; neu: alle GildenLager inputs leer machen
    For $s=0 to UBound($aGildenLager,2)-1
    For $i=1 To UBound($aGildenLager)-1
    GUICtrlSetData($aGildenLager[$i][$s],"")
    Next
    Next
    _setCombo($ComboUser) ; NEU....
    _setCombo1($ComboUser1) ; NEU....
    EndFunc
    ;------------------------------------------------------------------------------------------
    Func _clearkommplettGUI()
    GUICtrlSetData($inputLager,'')
    GUICtrlSetData($ComboUser,"")
    GUICtrlSetData($ComboUser1,"")
    For $s=0 to UBound($aschliesfach,2)-1
    For $i=1 To UBound($aschliesfach)-1
    GUICtrlSetData($aschliesfach[$i][$s],"")
    Next
    Next
    For $s=0 to UBound($aLager,2)-1
    For $i=1 To UBound($aLager)-1
    GUICtrlSetData($aLager[$i][$s],"")
    Next
    Next
    For $s=0 to UBound($aGildenLager,2)-1
    For $i=1 To UBound($aGildenLager)-1
    GUICtrlSetData($aGildenLager[$i][$s],"")
    Next
    Next
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _setCombo($comboToSet,$init=-1) ; wenn init -1 ist soll der derzeit gewählte Eintrag gewählt bleiben, standard Verhalten der Funktion
    Local $Sections = IniReadSectionNames($DataINI)
    if @error then Return -1 ; verlässt die Funktion, da in der ini keine Einträge gefunden wurden
    Local $SectionString = _ArrayToString($Sections,'|',1,UBound($Sections)-1)
    $auswahl=GUICtrlRead($comboToSet)
    GUICtrlSetData($comboToSet,"") ; leert combo bevor Daten neu gesetzt werden
    if $init <> -1 Then
    GUICtrlSetData($comboToSet,$SectionString,$Sections[1]) ; Setzt Werte des combos und wählt Eintrag 1 der ini
    Else
    GUICtrlSetData($comboToSet,$SectionString,$auswahl) ; Setzt Werte des combos und behält ursprüngliche Wahl bei
    EndIf
    ;Return($SectionString) ; entfernt, da die control daten jetzt innerhalb der Funktion gesetzt werden
    EndFunc
    ;-------------------------------------------------------------------------------------------
    Func _setCombo1($comboToSet,$init=-1) ; wenn init -1 ist soll der derzeit gewählte Eintrag gewählt bleiben, standard Verhalten der Funktion
    Local $Sections = IniReadSectionNames($GildenDataINI)
    if @error then Return -1 ; verlässt die Funktion, da in der ini keine Einträge gefunden wurden
    Local $SectionString = _ArrayToString($Sections,'|',1,UBound($Sections)-1)
    $auswahl=GUICtrlRead($comboToSet)
    GUICtrlSetData($comboToSet,"") ; leert combo bevor Daten neu gesetzt werden
    if $init <> -1 Then
    GUICtrlSetData($comboToSet,$SectionString,$Sections[1]) ; Setzt Werte des combos und wählt Eintrag 1 der ini
    Else
    GUICtrlSetData($comboToSet,$SectionString,$auswahl) ; Setzt Werte des combos und behält ursprüngliche Wahl bei
    EndIf
    ;Return($SectionString) ; entfernt, da die control daten jetzt innerhalb der Funktion gesetzt werden
    EndFunc
    ;-------------------------------------------------------------------------------------------

    [/autoit]


    Ich hoffe das wieder jemand soviel Geduld für mich aufbringen kann und mich bei diesem Vorhaben unterstützt!

    Mfg Ghostlader

    2 Mal editiert, zuletzt von Ghostleader (30. Dezember 2011 um 15:33)

  • ich hab zwar nicht verstanden wie du das mit den accountnamen meinst, aber ich hab schon mal einen anfang gemacht:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 483, 238, 192, 124)
    $Button1 = GUICtrlCreateButton("Import", 112, 24, 233, 81)
    $Button2 = GUICtrlCreateButton("Export", 110, 119, 233, 81)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    For $i = 1 to 3
    $Read1 = IniRead ("gildendata.ini","testuser1","Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini","testuser2","Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser2","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser2","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini","testuser1","Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini","testuser2","Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser2","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser2","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini","testuser2","Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser2","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser2","Lager"&$i,$Read2)
    Next
    $Read1 = IniRead ("gildendata.ini","testuser1","Schliessfach",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Schliessfach",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Schliessfach",$Read2)

    MsgBox (4,"fertisch","aber wenn ein Accountname schonmal vorhanden ist soll eine msgBox kommen mit der Frage ob die Daten überschrieben werden sollen und mit Ja/nein bestätigt werden müssen")
    FileDelete (@ScriptDir&"\lagerimport.ini")

    Case $Button2
    If FileExists (@scriptdir&"lagerimport.ini") Then
    $box1 = MsgBox (4,"blabla","sollen die daten überschrieben werden?")
    Switch $box1
    Case 6
    $read = FileRead ("gildendata.ini")
    $create = _FileCreate("lagerimport.ini")
    $open = FileOpen ("lagerimport.ini",2)
    FileWrite ($open, $read)
    FileClose ($open)
    Exit
    Case 7
    MsgBox (0,"pech","dann halt nicht")
    Exit
    EndSwitch
    Else
    $read = FileRead (@scriptdir&"gildendata.ini")
    $create = _FileCreate(@scriptdir&"lagerimport.ini")
    $open = FileOpen ($create)
    FileWrite ($open, $read)
    FileClose ($open)
    Exit
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Hallo zusammen,

    @Mr.SaxoI3eat
    Danke erstmal für die Mühe die du dir gemacht hast!

    Zu deinem Satz:
    [ich hab zwar nicht verstanden wie du das mit den accountnamen meinst, aber ich hab schon mal einen anfang gemacht:]

    Die Accountnamen legt ja Teilweise der Verwalter und Teilweise jeder Benutzer selber fest, was bedeutet das es da noch das Problem gibt, das man die wie du es gemacht hast:(die Testuser angeben)
    For $i = 1 to 3
    $Read1 = IniRead ("gildendata.ini","testuser1","Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export

    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini","testuser2","Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser2","Lager"&$i,""); aus export
    So direkt nicht angeben kann, denn die Ini von mir war nur ein Beispiel, aber die heissen ja nicht immer so.
    Das bedeutet man müsste es so machen das man die User (in dem Fall Testuser1 + 2) nicht direkt angibt sondern das es eben immer ohne Vorgabe ausgelesen werden muss!
    Kann man dies irgendwie machen also das man diese Sektion angiebt ohne direkt den Namen vorher einzutragen der dann da drin steht da man den ja nicht weiss und im Code einbauen kann?

    Mfg Ghostleader

  • Hallo Ghostreader,
    Also zu deinen Accounts
    Laut deiner Beispiel Ini sind die Accountnamen immer der Sektionsname.
    Dafür nehmen wir die Funktion

    [autoit]

    IniReadSectionNames

    [/autoit]


    Das liefert uns alle Sektionsnamen, also auch alle Accountnamen.

    Beim Import musst du jetzt erstmal die Accountnamen überprüfen:

    Spoiler anzeigen
    [autoit]

    $GildenAccounts = IniReadSectionNames ("gildendata.ini")
    $Lageraccounts = IniReadSectionNames ("lagerimport.ini")
    For $i = 1 To $GildenAccounts[0]
    $Vergleichbool = False
    For $k = 1 TO $Lageraccounts[0]
    If $GildenAccounts[$i] = $Lageraccounts[$k] Then
    $Vergleichbool = True
    ;-----------------
    ;Zwei gleiche Accounts gefunden
    ;Aktion einbauen
    EndIf
    Next
    If $Vergleichbool = False Then
    ;--------------------
    ;Account wurde nicht gefunden
    ;Aktion einbauen
    EndIf
    Next

    [/autoit]
  • Hallo TheLuBu,

    danke erstmal.

    Aber wie kann ich denn deinen Code mit dem von Mr.SaxoI3eat nun zusammenfügen, denn bei ihm ist es ja etwas anders aufgebaut!
    Brauche ich die ganzen IniRead´s garnet mehr um alles auszulesen wenn ich mit IniReadSectionNames arbeite?

    Mfg Ghostleader

  • alsooooo:
    ich denke dass die lagerimport sowas wie ein patch sein soll.
    das script liest alle user aus der gildendata aus und gleicht sie mit deinem patch ab. in deinem patch ist es völlig egal wie der abgleichname heißt, ich hab ihn jetzt mal wieder "testuser1 genannt.

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 483, 238, 192, 124)
    $Button1 = GUICtrlCreateButton("Import", 112, 24, 233, 81)
    $Button2 = GUICtrlCreateButton("Export", 110, 119, 233, 81)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    $Accountnamen = IniReadSectionNames("gildendata.ini")
    $max = _ArrayMax( $Accountnamen)
    For $i=1 To $max
    MsgBox (0,"test", "jetzt kommt user: "&$Accountnamen[$i])
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Schliessfach",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Schliessfach",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Schliessfach",$Read2)
    Next

    FileDelete (@ScriptDir&"\lagerimport.ini")

    Case $Button2
    If FileExists (@scriptdir&"lagerimport.ini") Then
    $box1 = MsgBox (4,"blabla","sollen die daten überschrieben werden?")
    Switch $box1
    Case 6
    $read = FileRead ("gildendata.ini")
    $create = _FileCreate("lagerimport.ini")
    $open = FileOpen ("lagerimport.ini",2)
    FileWrite ($open, $read)
    FileClose ($open)
    Exit
    Case 7
    MsgBox (0,"pech","dann halt nicht")
    Exit
    EndSwitch
    Else
    $read = FileRead (@scriptdir&"gildendata.ini")
    $create = _FileCreate(@scriptdir&"lagerimport.ini")
    $open = FileOpen ($create)
    FileWrite ($open, $read)
    FileClose ($open)
    Exit
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Mfg
    Mr.Saxobeat

    Einmal editiert, zuletzt von Mr.SaxoI3eat (29. Dezember 2011 um 17:58)

  • Hallo zusammen,

    @Mr.SaxoI3eat
    erstmal danke wieder für deine Arbeit!

    Aber, scheinbar denkst du genau in die Falsche richtung, denneigentlich soll ja beim Import geschaut werden ob der Account schon vorhanden ist und dann nachgefragt ob dieser wenn er schon da ist überschrieben wird, bei dir macht er das einmal aber beim Export da fragt es ob die Datei überschrieben werden soll was ja egal ist da es um die Accounts geht also da abzufragen!
    Auch wäre es schön wenn er beim Imput nicht bei jedem User sagt jetzt kommt der User sondern eben nur dann die MsgBox kommt mit der abfrage ob oder ob nicht überschreiben wenn der Account schon vorhanden ist!
    Wäre schön wenn du mir das bitte noch ändern könntest, aber ansonsten ist das Script so super für den Einsatz bei mir!

    Mfg Ghostleader

  • ich hab es mal ein bisschen erweitert.
    eigentlich sollte es bei dem exportbutton das update-script umformen. doch irgendwie mach mich heute "inireadsection" nicht.
    leider musst du das jetzt per hand machen aber das geht ja schnell: einfach bei der erstellten/veränderten lagerimport die zwei Sections in jeweils testuser1 umbenennen.

    ich hoffe diesmal stimmts einigermaßen, aber du kannst gerne weiterbasteln ^^:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 483, 238, 192, 124)
    $Button1 = GUICtrlCreateButton("Import", 112, 24, 233, 81)
    $Button2 = GUICtrlCreateButton("Export", 110, 119, 233, 81)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    If FileExists (@scriptdir&"\gildendata.ini") = @error Then
    MsgBox (0,"Fehler","Gildendata existiert nicht")
    EndIf

    $Accountnamen = IniReadSectionNames("gildendata.ini")
    $max = _ArrayMax( $Accountnamen)
    For $i=1 To $max
    $msgbox = MsgBox (4,"test", "Soll der Account "&$Accountnamen[$i]&" überschrieben werden?")
    if $msgbox = 6 Then
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i&"Ort",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i&"Ort",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i&"Ort",$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Lager"&$i,""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Lager"&$i,""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Lager"&$i,$Read2)
    $Read1 = IniRead ("gildendata.ini",$Accountnamen[$i],"Schliessfach",""); aus import
    $Read2 = IniRead ("lagerimport.ini","testuser1","Schliessfach",""); aus export
    If Not ($Read1 = $Read2) Then IniWrite ("gildendata.ini","testuser1","Schliessfach",$Read2)
    Else
    ContinueLoop
    EndIf
    Next

    FileDelete (@ScriptDir&"\lagerimport.ini")

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

    Case $Button2
    If FileExists (@scriptdir&"\lagerimport.ini") Then
    $box1 = MsgBox (4,"blabla","sollen die daten überschrieben werden?")
    If $box1 = 6 Then
    $read = FileRead ("gildendata.ini")
    $create = _FileCreate("lagerimport.ini")
    $open = FileOpen ("lagerimport.ini",2)
    FileWrite ($open, $read)
    FileClose ($open)
    Else
    MsgBox (0,"pech","dann halt nicht")
    Exit
    EndIf
    Else
    $read = FileRead (@scriptdir&"\gildendata.ini")
    $create = _FileCreate(@scriptdir&"\lagerimport.ini")
    $open = FileOpen ($create)
    FileWrite ($open, $read)
    FileClose ($open)
    Exit
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Hallo zusammen,

    @Mr.SaxoI3eat
    erstmal danke für deine Arbeit,
    aber irgendwie stimmt da etwas hinten und vorne nicht mit deiner Function (weder Im noch Export). Ich beschreibe kurz.

    Zum Import:
    Als test haben wir folgende inis:
    gildendata.ini bei jedem da.

    Spoiler anzeigen

    [testuser1]
    GildenLager1Ort=madaira
    GildenLager1=2116515151515|||||||||||||||||hbhbhh uoho ho ||||||||||||||||||8408498498484840840
    GildenLager2Ort=athen
    GildenLager2=fdgggggggggggggggggggg|||||||||||||||||dhdddddddddddddddddddddddd|||||||||||||||llllllllllllllllllllllllllllllllllllllllll|||
    GildenLager3Ort=testlager
    GildenLager3=5555555555555555555555||||||||||||||||||9999999999999999999999999|||||||||||||||||11111111111111111111111111
    [testuser10]
    GildenLager1Ort=probe
    GildenLager1=555555555555555555555555555|9||||||||||||||||4444444444444444444444444|||||||||||||||||777778787878787878787|
    [testuser20]
    GildenLager1Ort=test1
    GildenLager1=5555555555555555555|||||||||||||||||656565656565656565656565||||||||||||||||||212121212121212121212121
    GildenLager2Ort=test2
    GildenLager2=7878787878787878787878787|||||||||||||||||898989898989898989898989898||||||||||||||||||5656565656565656565656565
    [fghfgh fh]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|


    lagerimport.ini das die die Importiert werden soll.

    Spoiler anzeigen

    [testuser1]
    GildenLager1Ort=madaira
    GildenLager1=2116515151515|||||||||||||||||hbhbhh uoho ho ||||||||||||||||||8408498498484840840
    GildenLager2Ort=athen
    GildenLager2=fdgggggggggggggggggggg|||||||||||||||||dhdddddddddddddddddddddddd|||||||||||||||llllllllllllllllllllllllllllllllllllllllll|||
    GildenLager3Ort=testlager
    GildenLager3=5555555555555555555555||||||||||||||||||9999999999999999999999999|||||||||||||||||11111111111111111111111111
    [testuser10]
    GildenLager1Ort=probe
    GildenLager1=555555555555555555555555555|9||||||||||||||||4444444444444444444444444|||||||||||||||||777778787878787878787|
    [testuser20]
    GildenLager1Ort=test1
    GildenLager1=5555555555555555555|||||||||||||||||656565656565656565656565||||||||||||||||||212121212121212121212121
    GildenLager2Ort=test2
    GildenLager2=7878787878787878787878787|||||||||||||||||898989898989898989898989898||||||||||||||||||5656565656565656565656565
    [fghfgh fh]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|


    So, für dieses Beispiel sind sie ja gleich. Starte ich nun den Import so werde ich auch gefragt ob ich die User immer überschreiben will bis hierhin alles ok.
    Hier eine per hand geänderte lagerimport.ini:

    Spoiler anzeigen

    [testuser1]
    GildenLager1Ort=madaira
    GildenLager1=2116515151515|||||||||||||||||hbhbhh uoho ho ||||||||||||||||||8408498498484840840
    GildenLager2Ort=athen
    GildenLager2=fdgggggggggggggggggggg|||||||||||||||||dhdddddddddddddddddddddddd|||||||||||||||llllllllllllllllllllllllllllllllllllllllll|||
    GildenLager3Ort=testlager
    GildenLager3=5555555555555555555555||||||||||||||||||9999999999999999999999999|||||||||||||||||11111111111111111111111111
    [testuser11]
    GildenLager1Ort=probe
    GildenLager1=555555555555555555555555555|9||||||||||||||||4444444444444444444444444|||||||||||||||||777778787878787878787|
    [testuser20]
    GildenLager1Ort=test1
    GildenLager1=5555555555555555555|||||||||||||||||656565656565656565656565||||||||||||||||||212121212121212121212121
    GildenLager2Ort=test2
    GildenLager2=7878787878787878787878787|||||||||||||||||898989898989898989898989898||||||||||||||||||5656565656565656565656565
    [fghfgh fh]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|
    [test1]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|
    [test2]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|
    [test3]
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|


    Wenn ich nun auf Import klicke dann fragt er das selbe ab wie bei der anderen also ob ich testuser1, 10, 20 und fghfgh fh überschreiben will.
    Erster Fehler hierbei ist, das es den Testuser 10 hier garnicht gibt denn den habe ich ja 11 genannt.
    Desweiteren trägt er die neuen user test1 bis 3 nicht mit in die gildendata.ini ein!

    Zum Export:
    Wenn ich auf Export klicke und die lagerimport.ini noch nicht vorhanden ist, dann erstellt er diese aber beendet anschliessend das Programm (sollte er nicht tun) und wenn man nun in die lagerimport.ini schaut sieht man das sie leer ist!
    Erst nach nochmaligem klicken auf export kommt nun die msgbox mit der Frage ob diese Überschrieben werden soll. Wenn ich ja klicke dann wird erst jetzt etwas in die ini geschrieben! Kurz gesagt man mus 2 mal auf export klicken (zwischendurch Programm neustarten) damit etwas in die lagerimport.ini geschrieben wird!

    Ich hoffe das du oder Jemand anderes mir bei diesen Fehlern behilflich sein könnt denn ich finde sie einfach net!

    Mfg Ghostleader

  • Hallo wieder zusammen,

    also den export habe ich nun so gelöst, auch wenn ich nicht weiss ob es die eleganteste Art und weise ist, jedoch funzt es so einwandfrei!
    Die Gui ist zu probe Zwecken übernommen von Mr.SaxoI3eat.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 483, 238, 192, 124)
    $Button1 = GUICtrlCreateButton("Import", 112, 24, 233, 81)
    $Button2 = GUICtrlCreateButton("Export", 110, 119, 233, 81)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;---------------------------------------------------------------------------------------------------------------
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;---------------------------------------------------------------------------------------------------------------
    Case $Button2
    _export()
    EndSwitch
    WEnd
    Func _export()
    If FileExists (@scriptdir&"\lagerimport.ini") Then
    $box1 = MsgBox (4,"blabla","sollen die daten überschrieben werden?")
    If $box1 = 6 Then
    $read = FileRead ("gildendata.ini")
    $open = FileOpen ("lagerimport.ini",2)
    FileWrite ($open, $read)
    FileClose ($open)
    ElseIf $box1 = 7 Then
    MsgBox (0,"Sie haben Nein gedrückt","Daten werden nicht Exportiert")
    EndIf
    Else
    FileCopy(@Scriptdir&"\gildendata.ini", @ScriptDir&"\lagerimport.ini")
    EndIf
    EndFunc

    [/autoit]


    Bleibt aber nun noch das Problem des Imports.
    Ich versuche es auch weiter,jedoch hoffe ich das dazu noch jemand weiter helfen kann!

    Mfg Ghostleader

  • Mit deinen Beispieldaten hat es so geklappt ;)

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 483, 238, 192, 124)
    $Button1 = GUICtrlCreateButton("Import", 112, 24, 233, 81)
    $Button2 = GUICtrlCreateButton("Export", 110, 119, 233, 81)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    ;---------------------------------------------------------------------------------------------------------------
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;---------------------------------------------------------------------------------------------------------------
    Case $Button2
    _export()
    Case $Button1
    _import()
    EndSwitch
    WEnd
    Func _export()
    If FileExists(@ScriptDir & "\lagerimport.ini") Then
    $box1 = MsgBox(4, "blabla", "sollen die daten überschrieben werden?")
    If $box1 = 6 Then
    $read = FileRead("gildendata.ini")
    $open = FileOpen("lagerimport.ini", 2)
    FileWrite($open, $read)
    FileClose($open)
    ElseIf $box1 = 7 Then
    MsgBox(0, "Sie haben Nein gedrückt", "Daten werden nicht Exportiert")
    EndIf
    Else
    FileCopy(@ScriptDir & "\gildendata.ini", @ScriptDir & "\lagerimport.ini")
    EndIf
    EndFunc ;==>_export
    Func _import()
    $Lageraccounts = IniReadSectionNames(@ScriptDir & "\lagerimport.ini")
    $GildenAccounts = IniReadSectionNames(@ScriptDir & "\gildendata.ini")
    For $k = 1 To $Lageraccounts[0]
    $Vergleichbool = False
    For $i = 1 To $GildenAccounts[0]
    If $GildenAccounts[$i] = $Lageraccounts[$k] Then
    $Vergleichbool = True
    $msgbox = MsgBox(4, "Gefunden", "Der Account " & $GildenAccounts[$i] & " ist bereits vorhanden." & @CRLF & "Soll er überschrieben werden?")
    If $msgbox = 6 Then
    $tmparray = IniReadSection(@ScriptDir & "\lagerimport.ini", $Lageraccounts[$k])
    $temptxt = ""
    For $s = 0 To UBound($tmparray) - 1
    $temptxt &= $tmparray[$s][0] & "=" & $tmparray[$s][1] & @CRLF
    Next
    IniWriteSection(@ScriptDir & "\gildendata.ini", $GildenAccounts[$i], $temptxt)
    EndIf
    EndIf
    Next
    If $Vergleichbool = False Then
    $msgbox = MsgBox(0, "Nicht gefunden", "Der Account " & $Lageraccounts[$k] & " wurde nicht gefunden, er wird in die Ini geschrieben!")
    $tmparray = IniReadSection(@ScriptDir & "\lagerimport.ini", $Lageraccounts[$k])
    $temptxt = ""
    For $s = 0 To UBound($tmparray) - 1
    $temptxt &= $tmparray[$s][0] & "=" & $tmparray[$s][1] & @CRLF
    Next
    IniWriteSection(@ScriptDir & "\gildendata.ini", $Lageraccounts[$k], $temptxt)
    EndIf
    Next
    EndFunc ;==>_import

    [/autoit]
  • Hallo TheLuBu,

    vielen Dank wieder für deine großartige Hilfe!!!

    Aber einwas ist mir aufgefallen in der gildendata.Ini nachdem Import

    Spoiler anzeigen

    [testuser1]
    6=

    GildenLager1Ort=madaira

    GildenLager1=2116515151515|||||||||||||||||hbhbhh uoho ho ||||||||||||||||||8408498498484840840

    GildenLager2Ort=athen

    GildenLager2=fdgggggggggggggggggggg|||||||||||||||||dhdddddddddddddddddddddddd|||||||||||||||llllllllllllllllllllllllllllllllllllllllll|||

    GildenLager3Ort=testlager

    GildenLager3=5555555555555555555555||||||||||||||||||9999999999999999999999999|||||||||||||||||11111111111111111111111111

    [testuser10]
    2=

    GildenLager1Ort=probe

    GildenLager1=555555555555555555555555555|9||||||||||||||||4444444444444444444444444|||||||||||||||||777778787878787878787|

    [testuser20]
    4=

    GildenLager1Ort=test1

    GildenLager1=5555555555555555555|||||||||||||||||656565656565656565656565||||||||||||||||||212121212121212121212121

    GildenLager2Ort=test2

    GildenLager2=7878787878787878787878787|||||||||||||||||898989898989898989898989898||||||||||||||||||5656565656565656565656565

    [fghfgh fh]
    2=

    GildenLager1Ort=gh dgh jhg jh

    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|

    [test1]
    4=

    GildenLager1Ort=gh dgh jhg jh

    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|

    Lager5Ort=

    Lager6Ort=

    Warum macht er unter die Sectionen diese Zahlen zb 2= und 6= usw und hat das irgendwelche auswirkungen dann beim einlesen?

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (30. Dezember 2011 um 15:35)

  • Ups ein kleiner Fehler hat sich eingeschlichen,
    relativ weit unten in der Schleife bitte

    [autoit]

    $s = 0

    [/autoit]

    durch

    [autoit]

    $s = 1

    [/autoit]

    ersetzen

  • Hallo TheLuBu,

    du meinst bestimmt in den beiden Zeilen:

    [autoit]

    For $s = 0 To UBound($tmparray) - 1

    [/autoit]


    Wenn ich es nun da ändere (sofern du diese Zeilen meinst) dann kommen die = Zahlen doppelt siehe Spoiler:

    Spoiler anzeigen

    [testuser1]
    7=
    6=
    GildenLager1Ort=madaira
    GildenLager1=2116515151515|||||||||||||||||hbhbhh uoho ho ||||||||||||||||||8408498498484840840
    GildenLager2Ort=athen
    GildenLager2=fdgggggggggggggggggggg|||||||||||||||||dhdddddddddddddddddddddddd|||||||||||||||llllllllllllllllllllllllllllllllllllllllll|||
    GildenLager3Ort=testlager
    GildenLager3=5555555555555555555555||||||||||||||||||9999999999999999999999999|||||||||||||||||11111111111111111111111111
    [testuser10]
    3=
    2=
    GildenLager1Ort=probe
    GildenLager1=555555555555555555555555555|9||||||||||||||||4444444444444444444444444|||||||||||||||||777778787878787878787|
    [testuser20]
    5=
    4=
    GildenLager1Ort=test1
    GildenLager1=5555555555555555555|||||||||||||||||656565656565656565656565||||||||||||||||||212121212121212121212121
    GildenLager2Ort=test2
    GildenLager2=7878787878787878787878787|||||||||||||||||898989898989898989898989898||||||||||||||||||5656565656565656565656565
    [fghfgh fh]
    3=
    2=
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|
    [test1]
    5=
    4=
    GildenLager1Ort=gh dgh jhg jh
    GildenLager1=| |||jhg|j |||||j hg ||||| j|||j|||jghj||||ghjghj|j|j||gh|ghjgh||||j|
    Lager5Ort=
    Lager6Ort=
    [test2]
    6=
    GildenLager1Ort=xyz
    GildenLager1=454|||||||||||||||||884||||||||||||||||||811
    GildenLager2Ort=zyx
    GildenLager2=12||||||||||||||||||13|||||||||||||||||14
    GildenLager3Ort=yzx
    GildenLager3=45|||||||||||||||||56||||||||||||||||||67

    Mfg Ghostleader

    PS:
    Soweit ich feststellen konnte funktioniert das Hauptscript trotzdem, also die Daten werden Trotzdem ausgelesen.