Mit Zählerschleife verschiedene Namen schreiben

  • Hallo zusammen,
    ich bin neu hier und in der Welt von autoit und derzeit drüber über das Programm so einiges zu erfahren und zu lernen.
    Hoffe ihr könnt mir helfen.
    Zum Thema:
    ich wollte ganz einfach in ein Textdokument nacheinander Namen schreiben lassen. Im Moment 5 und es sollen noch mehr werden aber um die Übersichtlichkeit zu wahren, wollte ich nicht für jeden ne extra schleife sondern eine schleife die hier z.B. 5 mal durchläuft und mit jedem durchlauf den nächst höheren Namen schreibt.
    Bei mir würde er jetzt nur 5mal Name1 schreiben.
    Ist es überhaupt möglich, dass er dann den Namen 2,3 und so weiter schreibt anstatt immer den ersten?
    Wäre super dankbar für Hilfe.

    [autoit]

    Local $a = 1
    Local $Name1 = "Hans"
    Local $Name2 = "Dieter"
    Local $Name3 = "Erhard"
    Local $Name4 = "Christian"
    Local $Name5 = "Horst"

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

    Run("notepad.exe")

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

    WinWaitActive("[CLASS:Notepad]")

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

    While $a <= 5
    send($Name1)
    send("{ENTER}")
    $a = $a + 1
    WEnd

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

    sleep (3000)
    Send("!f")
    Send("x")

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

    WinWaitActive("Notepad")
    Send("n")

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

    WinWaitClose("[CLASS:Notepad]")

    [/autoit]

    Einmal editiert, zuletzt von Deathwing0801 (14. Juni 2013 um 09:28)

  • Spoiler anzeigen
    [autoit]

    Local $aNames[5] ; Array mit 5 Elemten deklarieren

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

    Run("notepad.exe")
    WinWaitActive("[CLASS:Notepad]")

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

    For $i = 0 To 4 ; Alternativ "UBound($aNames) - 1" statt "4"
    Send($aNames[$i])
    Send("{ENTER}")
    Next

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

    Sleep(3000)
    Send("!f")
    Send("x")

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

    WinWaitActive("Notepad")
    Send("n")

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

    WinWaitClose("[CLASS:Notepad]")

    [/autoit]

    Zu Arrays schaust du dir am besten BugFix's Array-Tutorial an, falls du noch keine Erfahrung mit Arrays hast. ;)

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Danke danke danke hast mir schon echt super weitergeholfen.
    Es tut schonmal was es soll ^^.
    Kann man eigentlich hinter das Array automatisch von einer externen Datei die Namen einlesen lassen?
    Wegen der Übersichtlichkeit und leichteren Änderbarkeit bei mehreren Scripts.

  • Sicher geht das, kommt natürlich auf den Aufbau und das Format der Quelldatei an ;)
    Wenn du uns das an einem Beispiel schilderst, dann können wir bestimmt helfen ;)

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

  • Wenn du die Namen einfach untereinander in eine Textdatei schreibst, als so:

    &quot;Test.txt&quot;

    Max
    Peter
    John
    Karl
    Dieter


    Dann kannst du das so machen:

    Spoiler anzeigen
    [autoit]

    Local $a = 1
    Local $Name = ""

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

    $File = FileOpen ("Test.txt", 0) ;Datei zum Lesen öffnen
    Run("notepad.exe")

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

    WinWaitActive("[CLASS:Notepad]")

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

    While $a <= 5
    $Name = FileReadLine ($File, $a) ; liest den Text aus Zeile $a
    If @error Then ExitLoop ;falls Zeile nicht existiert, wird abgebrochen
    send($Name) ; Namen senden

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

    send("{ENTER}")
    $a = $a + 1
    WEnd

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

    sleep (3000)
    Send("!f")
    Send("x")

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

    WinWaitActive("Notepad")
    Send("n")

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

    WinWaitClose("[CLASS:Notepad]")

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

    FileClose ($File) ; Datei wieder schließen

    [/autoit]

    MfG Xenon

  • Danke euch, ihr seid echt der Hammer. Habt mir sehr geholfen.
    Schade das es keine I Like Button für die User gibt ^^.