Problem mit Switch in For-Schleife

  • Hallo Community,

    kann es sein das ein Switch in einer For-Schleife Probleme bereitet?
    Ich habe eine Variable $abMarkt die mit Button Controls gefüllt ist , und will diese hiermit abfragen:

    Spoiler anzeigen
    [autoit]

    For $i = 0 To 9 Step 1
    Switch GUIGetMsg()
    Case $abMarkt[$i]
    Switch ControlGetText("[TITLE:" & _Getlang(1) & _GetLang(2) & "]","",$abMarkt[$i])
    Case _GetLang(12)

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

    Case _GetLang(13)

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

    Case _GetLang(14)

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

    Case _GetLang(15)

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

    Case _GetLang(16)

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

    Case _GetLang(17)

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

    Case _GetLang(18)
    __f_Inventar_Open()
    EndSwitch
    EndSwitch
    Next

    [/autoit]


    Doch das macht AutoIt anscheinend nicht, denn wenn ich auf einen Button drücke den ich mit einer Funktion bestückt habe drücke dann passiert nichts.
    Kann mir da jemand vlt. helfen

  • Wenn ich ehrlich bin sieht das für mich aus als könne das so gar nicht funktionieren ... kannst du vielleicht dein Script mal ganz posten, bzw. erklären was du vor hast das man es nachbauen kann (oder du ein Testscript schreibst)?

    Mich wundert grad GUIGetMsg(): Returns an event, or an array depending on the "advanced" parameter. Also gehe ich davon aus, dein Array $abMarkt 10 Events aus der Hilfe eingetragen hat?

    Was macht die Funktion GetLang und __f_Inventar_Open? Sind das funktionen einer UDF oder von dir? Mir sind diese bisher nicht bekannt...

    Grüße

    Grüße Yaerox

    Grüne Hölle

    Einmal editiert, zuletzt von Yaerox (8. April 2013 um 15:57)

  • Warum benutzt du ControlGetText ? Würde da nicht ein GUICtrlRead reichen ?
    Denn die Controls in $abMarkt gehören ja zu deiner eigenen GUI anscheinend.

    Poste doch bitte mal ein lauffähiges Beispiel.
    Außerdem ist es so evtl. besser :

    Spoiler anzeigen
    [autoit]

    Global $iMsg,$i,$abMarkt[10]

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

    $iMsg = GUIGetMsg()
    Switch $iMsg
    ; Case xyz hier werden andere Controls abgefragt
    Case Else
    For $i = 0 To 9 Step 1
    If $abMarkt[$i] = $iMsg Then
    Switch GUICtrlRead($abMarkt[$i])
    Case _GetLang(12)

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

    Case _GetLang(13)

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

    Case _GetLang(14)

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

    Case _GetLang(15)

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

    Case _GetLang(16)

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

    Case _GetLang(17)

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

    Case _GetLang(18)
    __f_Inventar_Open()
    EndSwitch
    EndIf
    Next
    EndSwitch

    [/autoit]
  • Hier ist ein *lauffähiges* Script ... (Ausgangssituation geschaffen ...)
    Ja, es scheint tatsächlich so dass es nicht funktioniert ^^
    Such dir am besten ne andere Lösung oder gehe die Ursache auf den Grund!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $aidButton[4], $i

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

    $hGUI = GUICreate('', 70, 70)
    $aidButton[0] = GUICtrlCreateButton('', 10, 10, 20, 20)
    $aidButton[1] = GUICtrlCreateButton('', 40, 10, 20, 20)
    $aidButton[2] = GUICtrlCreateButton('', 10, 40, 20, 20)
    $aidButton[3] = GUICtrlCreateButton('', 40, 40, 20, 20)
    GUISetState()

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

    While Sleep(10)
    For $i = 0 To UBound($aidButton[$i]) - 1
    Switch GUIGetMsg()
    Case $aidButton[$i]
    Switch Random(1, 4, 1)
    Case R(1)
    Case R(2)
    Case R(3)
    Case R(4)
    _Output($aidButton[$i])
    EndSwitch
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Next
    WEnd

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

    Func R($r)
    Return $r
    EndFunc

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

    Func _Output($idButton)
    Local Static $iCount
    $iCount += 1
    ConsoleWrite($iCount & ' --> ' & $idButton & @CRLF)
    EndFunc

    [/autoit]

    €dit:
    DAS nehme ich direkt wieder zurück :x
    Habe aus dummheit "UBound($aidButton[$i])" verwendet... :D
    Es funktioniert doch, allerdings musst du bei GUIGetMsg aufpassen!
    Das Problem dabei ist, es registriert keine weiteren Events wenn die Hauptschleife (also die ganz äußere) nicht einmal komplett durchlaufen ist...
    Du darfst also nur 1x GUIGetMsg aufrufen in der Schleife. Also ist der Verbesserungsvorschlag von Alcros auch direkt die Lösung zu deinem Problem! :)

    €dit2: Sorry... Heute ist nicht mein Tag :x >> Ich sollte erst überlegen was ich schreibe ^^
    Melde mich wieder wenn ich die tatsächliche Fehlerquelle gefunden habe :x

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $aidButton[4], $GMsg, $i

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

    $hGUI = GUICreate('', 70, 70)
    $aidButton[0] = GUICtrlCreateButton('', 10, 10, 20, 20)
    $aidButton[1] = GUICtrlCreateButton('', 40, 10, 20, 20)
    $aidButton[2] = GUICtrlCreateButton('', 10, 40, 20, 20)
    $aidButton[3] = GUICtrlCreateButton('', 40, 40, 20, 20)
    GUISetState()

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

    While Sleep(10)
    $GMsg = GUIGetMsg()
    For $i = 0 To UBound($aidButton) - 1
    Switch $GMsg
    Case $aidButton[$i]
    Switch Random(1, 4, 1)
    Case R(1)
    Case R(2)
    Case R(3)
    Case R(4)
    _Output($aidButton[$i])
    EndSwitch
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Next
    WEnd

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

    Func R($r)
    Return $r
    EndFunc

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

    Func _Output($idButton)
    Local Static $iCount
    $iCount += 1
    ConsoleWrite($iCount & ' --> ' & $idButton & @CRLF)
    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von Yjuq (8. April 2013 um 16:15)

  • Ich war halt einfach nur zu faul um alle 10 Controls abzufragen :D Deswegen wollte ich das verkürzen und habe mir dann das dabei gedacht. Denn es wird nicht nur bei diesen 10 Controls bleiben es werden noch ein paar mehr. Ich will einfach nur übersichtlich alle controls abfragen. Hab gerade kein Code zur Verfügung bin gerade unterwegs. Ich poste den dann später nochmal.

  • JETZT hab ich tatsächlich den Fehler warum das nicht reagiert ^^
    Du rufst 10x GUIGetMsg auf...

    Das verlangsamt die Schleife extrem und es kann die Buttons nicht registrieren.
    GUIGetMsg reguliert nämlich den Schleifendurchlauf von automatisch wegen der Computer Auslastung (CPU).
    Durch diese For-Schleife reguliert GUIGetMsg das ganze 10x was die Schleife erheblich verlangsamt.

    Dadurch kann die GUIGetMsg den Button nicht registrieren. Die Schleife lässt sich beschleunigen indem du die Maus bewegst!
    Normalerweise wird die Problematik des GUIGetMsg aufrufst in Grafische Anwendungen bemerkbar, wo das Bild sich bei jeden Schleifendurchlauf verändert.

    Wenn du mal ganz schnell den Button drückst, hast du vielleicht glück und es reagiert darauf. Das zeigt zumindest dass AutoIt es zulässt!
    Daher ist der Vorschlag von Alcros anzunehmen.

    Pühüü ^^

  • Ich hatte in C++ mal das Problem das ich dachte der läuft bei einer ähnlichen Schleife nur 1x durch, allerdings hat er in wirklichkeit die Schleife mehrmals durchlaufen, leider aber immer im gleichen Case, der Grund dafür war, dass ich die "Switch-Variable" nicht neu gesetzt hatte ... In AutoIt hatte ich das Problem bisher noch nicht, aber wenn du dir das mal durch den kopf gehen lässt könntest du das ja mal ausprobieren ...

    Wenn du dir das in C++ vorstellst steht nach jedem Case ein break und da gab mir jemand den Tipp und meinte ich solle mal überlegen welchen Wert eine Variable nach einer Abbruchbedingung habe ;)

    Grüße

    Grüße Yaerox

    Grüne Hölle

  • Ich bedanke mich schonmal im Vorraus für die Hilfe :D Aber trotz der verbesserung funktioniert es nicht :/ Woran kann es nur liegen?
    Hier mal das ganze Skript:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include "Includes\Lang.au3"

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

    Global $hInventar

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

    Dim $abMain[10]
    Dim $abMarkt[10]

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

    $hInventar = GUICreate(_GetLang(19),250,400)
    GUISetState(@SW_HIDE,$hInventar)

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

    $hGui = GUICreate(_GetLang(1) & _GetLang(2),800,600)
    $hButton_Main = GUICtrlCreateButton(_GetLang(3),30,30,200,50)
    GUICtrlSetState($hButton_Main,$GUI_DISABLE)
    $hButton_Markt = GUICtrlCreateButton(_GetLang(4),300,30,200,50)
    $hButton_Computer = GUICtrlCreateButton(_GetLang(5),560,30,200,50)
    __p_Create_Main()
    __p_Create_Computer()
    __p_Create_Markt()

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

    __f_Deactivate_All()
    __f_Activate_Main()

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

    $hGroup_Main = GUICtrlCreateGroup(_GetLang(6),30,100,740,470)

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

    GUISetState(@SW_SHOW,$hGui)

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

    While Sleep(10)
    $msg = GUIGetMsg()
    ;For $i = 0 To 9 Step 1
    Switch $msg
    Case $GUI_EVENT_CLOSE
    $State_Main = WinGetState("[TITLE:" & _GetLang(1) & _GetLang(2) & "]","")
    $State_Inventr = WinGetState("[TITLE:" & _GetLang(19) & "]","")
    If BitAND($State_Main,8) Then
    __f_Exit()
    Else
    If BitAND($State_Inventr,8) Then
    __f_Inventar_Close()
    EndIf
    EndIf
    Case $hButton_Main
    GUICtrlSetState($hButton_Main,$GUI_DISABLE)
    GUICtrlSetState($hButton_Markt,$GUI_ENABLE)
    GUICtrlSetState($hButton_Computer,$GUI_ENABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(6))
    __f_Deactivate_All()
    __f_Activate_Main()
    Case $hButton_Computer
    GUICtrlSetState($hButton_Main,$GUI_ENABLE)
    GUICtrlSetState($hButton_Markt,$GUI_ENABLE)
    GUICtrlSetState($hButton_Computer,$GUI_DISABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(8))
    __f_Deactivate_All()
    __f_Activate_Computer()
    Case $hButton_Markt
    GUICtrlSetState($hButton_Main,$GUI_ENABLE)
    GUICtrlSetState($hButton_Markt,$GUI_DISABLE)
    GUICtrlSetState($hButton_Computer,$GUI_ENABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(7))
    __f_Deactivate_All()
    __f_Activate_Markt()
    Case Else
    For $i = 0 To 9 Step 1
    If $msg == $abMarkt[$i] Then
    Switch GUICtrlRead($abMarkt[$i])
    Case _GetLang(12)

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

    Case _GetLang(13)

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

    Case _GetLang(14)

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

    Case _GetLang(15)

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

    Case _GetLang(16)

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

    Case _GetLang(17)

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

    Case _GetLang(18)
    __f_Inventar_Open()
    EndSwitch
    EndIf
    Next
    EndSwitch
    ;Next
    WEnd

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

    Func __f_Inventar_Open()
    GUICtrlSetState(@SW_SHOW,$hInventar)
    EndFunc

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

    Func __f_Inventar_Close()
    GUICtrlSetState(@SW_HIDE,$hInventar)
    EndFunc

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

    Func __f_Deactivate_All()
    ;Main
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMain[0],$GUI_HIDE)
    Next

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

    ;Markt
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMarkt[$i],$GUI_HIDE)
    Next
    EndFunc

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

    Func __f_Activate_Computer()

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

    EndFunc

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

    Func __f_Activate_Main()
    For $i = 0 To 9 Step 2
    GUICtrlSetState($abMain[$i],$GUI_SHOW)
    Next
    EndFunc

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

    Func __f_Activate_Markt()
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMarkt[$i],$GUI_SHOW)
    Next
    EndFunc

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

    Func __p_Create_Markt()
    $abMarkt[0] = GUICtrlCreateButton(_GetLang(12),50,130,100,25)
    $abMarkt[1] = GUICtrlCreateButton(_GetLang(13),170,130,100,25)
    $abMarkt[2] = GUICtrlCreateButton(_GetLang(14),290,130,100,25)
    $abMarkt[3] = GUICtrlCreateButton(_GetLang(15),410,130,100,25)
    $abMarkt[4] = GUICtrlCreateButton(_GetLang(16),530,130,100,25)
    $abMarkt[5] = GUICtrlCreateButton(_GetLang(17),650,130,100,25)
    $abMarkt[6] = GUICtrlCreateButton(_GetLang(18),50,170,700,25)
    EndFunc

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

    Func __p_Create_Computer()

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

    EndFunc

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

    Func __p_Create_Main()
    $abMain[0] = GUICtrlCreateLabel("",40,120,200,200)
    GUICtrlSetData($abMain[0],_GetLang(9) & @CRLF & _GetLang(10) & @CRLF & _GetLang(11))
    EndFunc

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

    Func __f_Exit()
    Exit
    EndFunc

    [/autoit]
  • Achso okay :D Hier hast du sie :D

    [autoit]

    #include <Array.au3>

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

    Func _GetLang($Str)
    Local $lang, $read, $read2, $read3
    $lang = IniRead("Settings.ini","Language","ActLang","german")
    $read = FileRead(@ScriptDir & "\Language\" & $lang & ".lang")
    $read = StringSplit($read,@CRLF)
    ;_ArrayDisplay($read)
    For $i = 1 To $read[0] Step 1
    $read2 = StringSplit($read[$i],"=")
    ;_ArrayDisplay($read2)
    If $read2[1] == $Str Then
    If StringTrimRight($read2[2],StringLen($read2[2]) - 1) == "#" Then
    $zahl = StringSplit($read2[2],"#")
    ;_ArrayDisplay($zahl)
    For $ii = 1 To $read[0] Step 1
    $read3 = StringSplit($read[$ii],"=")
    ;_ArrayDisplay($read2)
    If Int($read3[1]) == Int($zahl[$zahl[0]]) Then
    Return $read3[$read2[0]]
    ExitLoop
    EndIf
    Next
    Else
    Return $read2[2]
    ExitLoop
    EndIf
    EndIf
    Next
    EndFunc

    [/autoit]

    P.S.: Im anhang noch 2 Dateien die wichtig sind damit die _GetLang() funktioniert :D
    Und du musst die Settings.ini bei die .au3 packen und die german.txt muss du in eine .lang Datei umwandeln und in einen Ordner Namens Language packen und evtl. die _GetLang() In einen Ordner namens Include :D

  • Bei WinGetState kannst du direkt das Handle verwenden! Nur als Tipp ;)
    Ansonsten ist das Script selbsterklären :x

    (Habe unverschämterweise die Funktion _GetLang() in das Script gepackt :D)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Global $hInventar

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

    Dim $abMain[10]
    Dim $abMarkt[10]

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

    $hInventar = GUICreate(_GetLang(19),250,400)
    GUISetState(@SW_HIDE,$hInventar)

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

    $hGui = GUICreate(_GetLang(1) & _GetLang(2),800,600)
    $hButton_Main = GUICtrlCreateButton(_GetLang(3),30,30,200,50)
    GUICtrlSetState($hButton_Main,$GUI_DISABLE)
    $hButton_Markt = GUICtrlCreateButton(_GetLang(4),300,30,200,50)
    $hButton_Computer = GUICtrlCreateButton(_GetLang(5),560,30,200,50)
    __p_Create_Main()
    __p_Create_Computer()
    __p_Create_Markt()

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

    __f_Deactivate_All()
    __f_Activate_Main()

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

    $hGroup_Main = GUICtrlCreateGroup(_GetLang(6),30,100,740,470)

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

    GUISetState(@SW_SHOW,$hGui)

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

    While Sleep(10)
    $msg = GUIGetMsg()
    ;For $i = 0 To 9 Step 1
    Switch $msg
    Case $GUI_EVENT_CLOSE
    $State_Main = WinGetState($hGui) ;// Geändert
    $State_Inventr = WinGetState($hInventar) ;// Geändert
    If BitAND($State_Main,8) Then
    __f_Exit()
    Else
    If BitAND($State_Inventr,8) Then
    __f_Inventar_Close()
    EndIf
    EndIf
    Case $hButton_Main
    GUICtrlSetState($hButton_Main,$GUI_DISABLE)
    GUICtrlSetState($hButton_Markt,$GUI_ENABLE)
    GUICtrlSetState($hButton_Computer,$GUI_ENABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(6))
    __f_Deactivate_All()
    __f_Activate_Main()
    Case $hButton_Computer
    GUICtrlSetState($hButton_Main,$GUI_ENABLE)
    GUICtrlSetState($hButton_Markt,$GUI_ENABLE)
    GUICtrlSetState($hButton_Computer,$GUI_DISABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(8))
    __f_Deactivate_All()
    __f_Activate_Computer()
    Case $hButton_Markt
    GUICtrlSetState($hButton_Main,$GUI_ENABLE)
    GUICtrlSetState($hButton_Markt,$GUI_DISABLE)
    GUICtrlSetState($hButton_Computer,$GUI_ENABLE)
    GUICtrlSetData($hGroup_Main,_GetLang(7))
    __f_Deactivate_All()
    __f_Activate_Markt()
    Case Else
    For $i = 0 To 9 Step 1
    If $msg == $abMarkt[$i] Then
    Switch GUICtrlRead($abMarkt[$i])
    Case _GetLang(12)
    ConsoleWrite(True & @CRLF) ;// Eingefügt << An der Schleife ist alles In Ordnung ;)
    Case _GetLang(13)

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

    Case _GetLang(14)

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

    Case _GetLang(15)

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

    Case _GetLang(16)

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

    Case _GetLang(17)

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

    Case _GetLang(18)
    __f_Inventar_Open()
    EndSwitch
    EndIf
    Next
    EndSwitch
    ;Next
    WEnd

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

    ; ACHTUNG!!! HIER :DDD << Richte deine Aufmerksamkeit auf diese Stelle! <<<<<<<<<<<<<<<<<<<<<<<<<<
    ; Du Nasenbär :DDD
    Func __f_Inventar_Open()
    ;~ GUICtrlSetState(@SW_SHOW,$hInventar)
    GUISetState(@SW_SHOW, $hInventar)
    EndFunc

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

    Func __f_Inventar_Close()
    ;~ GUICtrlSetState(@SW_HIDE,$hInventar)
    GUISetState(@SW_HIDE, $hInventar)
    EndFunc

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

    Func __f_Deactivate_All()
    ;Main
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMain[0],$GUI_HIDE)
    Next

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

    ;Markt
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMarkt[$i],$GUI_HIDE)
    Next
    EndFunc

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

    Func __f_Activate_Computer()

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

    EndFunc

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

    Func __f_Activate_Main()
    For $i = 0 To 9 Step 2
    GUICtrlSetState($abMain[$i],$GUI_SHOW)
    Next
    EndFunc

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

    Func __f_Activate_Markt()
    For $i = 0 To 9 Step 1
    GUICtrlSetState($abMarkt[$i],$GUI_SHOW)
    Next
    EndFunc

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

    Func __p_Create_Markt()
    $abMarkt[0] = GUICtrlCreateButton(_GetLang(12),50,130,100,25)
    $abMarkt[1] = GUICtrlCreateButton(_GetLang(13),170,130,100,25)
    $abMarkt[2] = GUICtrlCreateButton(_GetLang(14),290,130,100,25)
    $abMarkt[3] = GUICtrlCreateButton(_GetLang(15),410,130,100,25)
    $abMarkt[4] = GUICtrlCreateButton(_GetLang(16),530,130,100,25)
    $abMarkt[5] = GUICtrlCreateButton(_GetLang(17),650,130,100,25)
    $abMarkt[6] = GUICtrlCreateButton(_GetLang(18),50,170,700,25)
    EndFunc

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

    Func __p_Create_Computer()

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

    EndFunc

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

    Func __p_Create_Main()
    $abMain[0] = GUICtrlCreateLabel("",40,120,200,200)
    GUICtrlSetData($abMain[0],_GetLang(9) & @CRLF & _GetLang(10) & @CRLF & _GetLang(11))
    EndFunc

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

    Func __f_Exit()
    Exit
    EndFunc

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

    Func _GetLang($Str)
    Local $lang, $read, $read2, $read3
    $lang = IniRead("Settings.ini","Language","ActLang","german")
    $read = FileRead(@ScriptDir & "\Language\" & $lang & ".lang")
    $read = StringSplit($read,@CRLF)
    ;_ArrayDisplay($read)
    For $i = 1 To $read[0] Step 1
    $read2 = StringSplit($read[$i],"=")
    ;_ArrayDisplay($read2)
    If $read2[1] == $Str Then
    If StringTrimRight($read2[2],StringLen($read2[2]) - 1) == "#" Then
    $zahl = StringSplit($read2[2],"#")
    ;_ArrayDisplay($zahl)
    For $ii = 1 To $read[0] Step 1
    $read3 = StringSplit($read[$ii],"=")
    ;_ArrayDisplay($read2)
    If Int($read3[1]) == Int($zahl[$zahl[0]]) Then
    Return $read3[$read2[0]]
    ExitLoop
    EndIf
    Next
    Else
    Return $read2[2]
    ExitLoop
    EndIf
    EndIf
    Next
    EndFunc

    [/autoit]