Schleifenende via InputBox vorgeben

  • Einen wunderschönen guten Morgen,

    nun stehe ich doch vor einem - für mich - unlösbaren Problem.
    Vor kurzem habe ich ... oder eher die Record-Funktion ... eine Formel entwickelt, die Bombe funktioniert.

    Diese gilt es aber jetzt zu optimieren, in dem Sinne, dass das Programm eine bestimmte Schleife "Anzahl-X" durchläuft.
    "Anzahl-X" möchte ich am liebsten im Vorfeld definieren.

    Wir haben ein Programm, in dem man erstellte Zeichnungen hinterlegen kann. Die Zeichnungen sind sogenannte CASPAKS.
    Jedes CASPAK muss man aber einzeln in das Programm laden, ehe sie erscheint. In unserer Sammlung liegen mittlerweile knapp 3.000 CASPAKS.
    Nur ungerne möchte ich jede einzelne Zeichnung manuell anklicken müssen, also hab ich mir gedacht - mensch, das wird AutoIt können!

    Mein Problem an dieser Stelle: Die verschiedenen Ordner sind unterschiedlich befüllt, gleichauf ich nicht immer alle Projekte einlesen möchte, sondern lediglich "Anzahl-X"; wie es mir eben passt.
    Pro Projekt kann man etwa 20 Sekunden rechnen. Wenn ich in einen Termin gehe oder Mittagspause mache, kann das Programm laufen. Hier würde ich dann gerne sagen:
    "Importiere mir 50 CASPAKS". Beim Programmstart würde ich mir also wünschen, dass mich die Importfunktion fragt "wie viele CASPAKS sollen importiert werden?".
    Nun gebe ich eine Zahl vor, bestätige diese mit OK und das Programm läuft solange durch, bis $i < "Anzahl-X" erreicht ist.

    Geht das überhaupt? Falls ja, wie gehe ich am besten vor?
    Vermutlich muss ich "Anzahl-X" selbst als Variable deklarieren und über eine Input-Funktion diese Variable füllen.
    Muss man dazu immer eine .ini-Datei anlegen, in der dann der Wert (den ich über die Input-Box eingegeben habe) steht? Zumindest habe ich soetwas via Google gefunden.

    Formel ist diese:

    Spoiler anzeigen


    #region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000407) ---

    #region --- Internal functions Au3Recorder Start ---
    Func _Au3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
    If $aResult[1] <> '00000407' Then
    MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(00000407->' & $aResult[1] & ')')
    EndIf

    EndFunc

    Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
    EndFunc

    _AU3RecordSetup()
    #endregion --- Internal functions Au3Recorder End ---

    $i=0
    while $i<1

    _WinWaitActivate("CASPAKS","")
    MouseClick("left",289,142,1)
    MouseClick("left",289,142,1)
    _WinWaitActivate("Import","")
    MouseClick("left",323,133,1)

    Sleep(3000)

    $i=$i+1
    wend

    #endregion --- Au3Recorder generated code End ---

    Würde mich über Eure Hilfe sehr freuen !

  • Manchmal muss man nur laut denken...

    Das hier noch vor den Text:

    Spoiler anzeigen
    Code
    $ANZAHLX = InputBox("Anzahl","Importdurchläufe angeben","[ANZAHL CASPAK-IMPORT]","")
    $FILE = FileOpen(@ScriptDir & "\anzahl.txt",2)
    FileWrite($FILE,$ANZAHLX)
    FileClose($FILE)


    und es funktioniert. Und eben die Input-Variable als max. Schleifenwert angeben.
    Wird dann eben nur eine .txt-Datei erstellt, aber ist egal. Geht :D

    Komplett:

    Spoiler anzeigen
    • Offizieller Beitrag

    Da du deine Fragen selber gelöst hast, kannst du auch den Thread auf gelöst setzen. ;)