Was mache ich falsch ?

  • Hallo, ich versuche aus einer Form Werte auszulesen und in einer Ini zu speichern.

    AutoIt
    Local $inputt1 =  GUICtrlRead ($Input1)
    ConsoleWrite($inputt1  &' ' & $input1& @CR)


    so funktioniert es natürlich.
    aber ich wollte mir 60 Zeilen ersparen, deshalb hatte ich gedacht so....

    Code
    For $nbr = 1 to 10
    	 Dim $test1 = '$inputt'&$nbr
    	 Dim $test2 = '$Input'&$nbr
    	   ConsoleWrite($test1  &' ' & $test2& @CR)
    	   	  Local $test1 =  GUICtrlRead ($test2)
    		  if $test1 =0 Then MsgBox (0,"Fehler","Es sind Fehler aufgetaucht!")
    		  ;ConsoleWrite($test1& @CR)
    	  if $nbr = 10 Then ExitLoop


    Das ergibt folgende Ausgabe auf der Console
    $inputt1 $Input1
    $inputt2 $Input2
    $inputt3 $Input3
    $inputt4 $Input4
    Ich glaube $inputt1 wird nicht als Variable erkannt. "inputt1" soll eigentlich einen Wert zurückgeben. Wie kann ich das ändern ?

    LG
    UdoL

    MfG
    UdoL :rock:

  • Schau dir mal Assign() und Eval() an:

    2 Mal editiert, zuletzt von DasIch (15. September 2015 um 16:06)

  • Genau das wo nach ich gesucht habe. Genial. so siehts dann aus...
    Danke

    AutoIt
    Func _iniwrite()
    
    
    	For $nbr = 1 to 60
       Local $test2 =  GUICtrlRead (Eval("Input" & $nbr))
    	ConsoleWrite(  $test2 & @CR)
    	  if $nbr = 60 Then ExitLoop
    Next

    MfG
    UdoL :rock:

  • Bitte kein Assign/Eval verwenden wenn es nicht nötig ist (ehrlich gesagt kenne ich keinen Fall bei dem man diese definitiv benötigt).
    Für diesen Anwendungsfalls nimmt man stattdessen eher ein Array:

    Des Weiteren:

    • Nichtssagender Threadtitel - wie sollen andere Nutzer mit einem ähnlichen Problem diesen Thread finden?
    • Falsches Unterforum - Hilfe und Unterstützung wäre die bessere Wahl gewesen