Variablenname hochzählen? ($variable1, $variable2,...)

  • Hi ich hab ein kleines Problem mit meinen Variablen :D
    Ich hab ein Programm was mit 10 Variablen rechnet. Erst werden 10 Inputfelder ausgelesen und dann sollen die Werte in einer Ini Datei gespeichert werden. So nun dachte ich um mir Schreibarbeit zu sparen und jede einzelne Variable in einen IniWrite zu verpacken, sollte es doch auch gehen, wenn ich einmal IniWrite schreibe und einfach den Variablenname hochzähle?
    Alle Variablen haben den gleichen Namen bis auf eine Zahl am Ende, also

    Code
    $var1
    $var2
    .
    .
    .


    so problem is halt wie oben beschrieben, dass ich folgendes machen müsste, um halt die werte der variablen in eine ini zu schreiben

    Code
    iniWrite("config","Daten","Variable",$var1)
    IniWrite("config","Daten","Variable",$var2)
    .
    .
    .

    gibts ne möglichkeit nur die zahl des variablen namen zu erhöhen oder muss ich für jeden neuen wert einen extrabefehl schreiben? geht das mit einer for schleife?

    Einmal editiert, zuletzt von cr4yzz (6. August 2010 um 00:00)

  • Hallo,

    Am besten gleich von Anfang an mit einem Array arbeiten.

    Beispiel:

    [autoit]


    $var[0] = GuiCtrlRead($Input0)
    $var[1] = GuiCtrlRead($Input1)
    $var[2] = GuiCtrlRead($Input2)
    $var[3] = GuiCtrlRead($Input3)
    $var[4] = GuiCtrlRead($Input4)

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

    For $Index=0 To Ubound($var)-1
    IniWrite("config","Daten","Variable",$var[$Index])
    Next

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

    Lg, Fabian

  • Obwohls bereits 'geclosed' ist, würde ich die Hauptfrage mit einer weiteren *Optimierung
    lösen:

    [autoit]

    Dim $var[5]

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

    For $i=0 To UBound($var)-1
    $var[$i] = GuiCtrlRead(Eval("Input"&Execute($i+1)))
    Next

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

    For $Index=0 To Ubound($var)-1
    IniWrite("config","Daten","Variable",$var[$Index])
    Next

    [/autoit]

    *damit kann man sich Tippzeit sparen, aber das geht selbstverständlich auf Kosten der
    Geschwindigkeit

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!


  • Mal ne kleine Bemerkung/Frage:

    AutoIt braucht ja länger bei langen Variablennamen, und wenn du schon bei Optimierung dabei bist, warum verwendest du $i und $Index ? $i / $Index ist eine Laufvariable, die kannst du auch ohne Probleme in der 2. Schleife auch verwenden, da sie eh wiede rauf 0 gesetzt wird.

    [autoit]

    Dim $var[5]

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

    For $i=0 To UBound($var)-1
    $var[$i] = GuiCtrlRead(Eval("Input"&Execute($i+1)))
    Next

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

    For $i=0 To Ubound($var)-1
    IniWrite("config","Daten","Variable",$var[$i])
    Next

    [/autoit]
  • weiterhin gibts die Möglichkeit per EVAL() Variablen hochzuzählen

    [autoit]

    $var1=10
    $var2=20
    $var3="Test"
    $var4=True
    assign("var5","das ist eine Variable")

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

    for $i=1 to 5
    msgbox(0,"$var"&$i,eval("var"&$i))
    next

    [/autoit]