If schleifen fehler ?!?

  • Ich habe Folgendes Script:

    Spoiler anzeigen
    [autoit]

    #include-once

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

    Global $i, $lanc, $langs[50] ,$var

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

    If @OSLang = 0409 Or 0809 Or "0c09" Or 1009 Or 1409 Or 1809 Or "1c09" Or 2009 Or 2409 Or 2809 Or "2c09" Or 3009 Or 3409 Then
    $lanc = "EN"
    ElseIf @OSLang = "040c" Or "080c" Or "0c0c" Or "100c" Or "140c" Or "180c" Then
    $lanc = "FR"
    ElseIf @OSLang = 0407 Or 0807 Or "0c07" Or 1007 Or 1407 Then
    $lanc = "DE"
    Else
    MsgBox(16, "Error-Erreur-Fehler", "Could not read language" & @CRLF & "Impossible de lire la langue" & @CRLF & "Konnte Sprachcode nicht lesen")
    Exit
    EndIf

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

    MsgBox(0,"",@OSLang)
    MsgBox(0,"",$lanc)

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

    $var = IniReadSection(@ScriptDir & "\lang.ini", $lanc)
    If @error Then
    MsgBox(4096, "Error-Erreur-Fehler", "There was an error. Probably no INI file exists." & @CRLF & "Il y avait une erreur. Probablement aucun fichier INI existe." & @CRLF & "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $var[0][0]
    $langs[$i] = $var[$i][1]
    Next
    EndIf

    [/autoit]

    @OSLang gibt mir 0407 aus
    $lanc ist aber EN

    Wieso?

    Einmal editiert, zuletzt von JuraX (4. Mai 2010 um 18:57)

  • du müsstest das wenn dann so formulieren:

    [autoit]

    If @OSLang = 0409 Or @OSLang = 0809 Or @OSLang = "0c09" ...............

    [/autoit]

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

    • Offizieller Beitrag

    Die If-Bedingung ist falsch aufgebaut!
    Das müsste so aussehen:
    If @OSLang = "..." Or @OSLang = "..." Or @OSLang = "..." Then

    Aber viel einfacher geht es mit Switch:

    [autoit]


    Switch @OSLang
    Case "0409", "0809", "0c09", "1009", "1409", "1809", "1c09", "2009", "2409", "2809", "2c09", "3009", "3409"
    $lanc = "EN"
    Case "040c", "080c", "0c0c", "100c", "140c", "180c"
    $lanc = "FR"
    Case "0407", "0807", "0c07", "1007", "1407"
    $lanc = "DE"
    Case Else
    MsgBox(16, "Error-Erreur-Fehler", "Could not read language" & @CRLF & "Impossible de lire la langue" & @CRLF & "Konnte Sprachcode nicht lesen")
    Exit
    EndSwitch

    [/autoit]