Kleines Problem mit 2 For Next Schleifen

  • Hallo,

    hab grad ein kleines Umsetzproblem mit 2 Schleifen.

    [autoit]


    $drive = StringLeft(@ScriptDir, 2)

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

    Global $userINI[4]
    $userINI[0] = $drive & "\myprog\main\1.ini"
    $userINI[1] = $drive & "\myprog\main\2.ini"
    $userINI[2] = $drive & "\myprog\main\3.ini"
    $userINI[3] = $drive & "\myprog\main\4.ini"

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

    Global $userINI1[4]
    $userINI1[0] = "AA"
    $userINI1[1] = "BB"
    $userINI1[2] = "CC"
    $userINI1[3] = "DD"

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

    For $j = 0 To UBound($userINI) - 1
    For $k = 0 To UBound($userINI1) - 1
    If IniRead($userINI[$j], "Section", "Testkey1", $drive & "\main" & $userINI1[$k] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey1", $drive & "\main" & $userINI1[$k] & "")
    If IniRead($userINI[$j], "Section", "Testkey2", $drive & "\main" & $userINI1[$k] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey2", $drive & "\main" & $userINI1[$k] & "")
    Next
    Next

    [/autoit]

    Am Ende sollten die INI Dateien so aussehen.

    Code
    ;1.INI
    [Section]
    Testkey1=C:\main\AA\
    Testkey2=C:\main\AA\
    Code
    ;2.INI
    [Section]
    Testkey1=C:\main\BB\
    Testkey2=C:\main\BB\
    Code
    ;3.INI
    [Section]
    Testkey1=C:\main\CC\
    Testkey2=C:\main\CC\
    Code
    ;4.INI
    [Section]
    Testkey1=C:\main\DD\
    Testkey2=C:\main\DD\

    Leider steht am Ende in jeder INI => C:\main\DD\ , finde aber irgendwie den Fehler nicht :rolleyes: Wer kann mir sagen wo es hängt? Danke schonmal.

    Einmal editiert, zuletzt von dieselwiesel (11. Februar 2014 um 13:35)

  • Könnte daher kommen, dass du Testkey1 und Testkey2 bei jedem Durchlauf der inneren Schleife überschreibst, also in der jeweiligen .ini nur die beiden Testkeys stehen, die beim letzten druchlauf der inneren Schleife geschrieben wurden

    UNPLEASANT SPOILER

    You just lost the game!

  • Das könnte nicht nur so sein, das ist der Fehler!
    Wie shadow667 bereits sagte überschreibst du alle Werte nochmal, wenn die $j For-Schleife bei 3 angelangt ist, mit "\mainDD".
    Es ist nur eine Schleife nötig. Siehe hier:

    Spoiler anzeigen
    [autoit]

    $drive = StringLeft(@ScriptDir, 2)

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

    Global $userINI[4]
    $userINI[0] = $drive & "\myprog\main\1.ini"
    $userINI[1] = $drive & "\myprog\main\2.ini"
    $userINI[2] = $drive & "\myprog\main\3.ini"
    $userINI[3] = $drive & "\myprog\main\4.ini"

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

    Global $userINI1[4]
    $userINI1[0] = "AA"
    $userINI1[1] = "BB"
    $userINI1[2] = "CC"
    $userINI1[3] = "DD"

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

    For $j = 0 To UBound($userINI) - 1
    If IniRead($userINI[$j], "Section", "Testkey1", $drive & "\main\" & $userINI1[$j] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey1", $drive & "\main\" & $userINI1[$j] & "")
    If IniRead($userINI[$j], "Section", "Testkey2", $drive & "\main\" & $userINI1[$j] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey2", $drive & "\main\" & $userINI1[$j] & "")
    Next

    [/autoit]