Processbar richtig einsetzen

  • Hallo zusammen,

    ich hab ein Programm geschrieben, welches einige Dateien in einem anderem Programm automatisch verarbeitet.
    Da die Operationen etwas länger brauchen, möchte ich dem Benutzer eine Anzeige geben, wie weit der Forschritt ist.

    Dieses Beispiel habe ich schon als Grundlage verwendet: http://www.autoitscript.com/wiki/Progress_Bar_Sample

    Jedoch bekomme ich das nicht richtig hin. Folgende Überlegung habe ich schon:

    Es wird immer eine Schleife durchlaufen. Die Anzahl dieser Schleife würde ich durch 100 teilen, wegen der 100 %.
    Aber wie ich dann weiter mache, weiß ich leider nicht. :S
    Auch ein Beispiel mit AdlibRegister() habe ich gefunden, jedoch konnte ich damit auch nichts richtiges umsetzen.

    Kann mir jemand einen Tipp geben, wie ich das mit der Progressbar machen kann?

    mfg reeky

    Einmal editiert, zuletzt von reeky (4. Juni 2012 um 23:53)

  • Du zählst einfach in deiner Schleife eine Variable hoch (um den Wert den du ja vorhin berechnet hast) und übergibst diese dann bei jedem Durchgang GUICtrlSetData(). Ich hoffe du verstehst was ich meine.

    Gruss Shadowigor

  • Mh... so ganz verstehe ich das nicht.

    Meine Überlegung geht in die Richtung, dass ich die Progressbar nutze, also die Werte von 0 bis 100 %.
    Dann muss nur irgendwie meine Anzahl der Schleifen mit den 100 % normiert werden, aber irgendwie weiß ich keinen Weg das umzusetzen.

  • [autoit]

    ;$i_Maximalwert = 100%
    ;$i_DerzeitigerWert = $i_X%

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

    $i_X = $i_DerzeitigerWert * 100 / $i_Maximalwert

    [/autoit]

    Und $i_X setzt du dann bei jedem Schleifendurchgang mit GUICtrlSetData.

    • Offizieller Beitrag

    Du musst die Schrittweite, also den Wert um den je Durchlauf die Progressbar erhöht wird (max. bis 100) mit dem Schleifenzähler multiplizieren und als Progresswert setzen.
    Rechnung:
    $Step = 100 / Anz. Durchläufe
    In der Schleife:

    [autoit]

    For $i = 1 To $max
    GuiCtrlSetData($progress, $i*$Step)
    ;....
    Next

    [/autoit]
  • Du musst die Schrittweite, also den Wert um den je Durchlauf die Progressbar erhöht wird (max. bis 100) mit dem Schleifenzähler multiplizieren und als Progresswert setzen.
    Rechnung:
    $Step = 100 / Anz. Durchläufe
    In der Schleife:

    Danke Bugfix! :D Das hat meinen Hänger überbrückt!

    Jetzt klappts :thumbup: