Progressbar ändern anhand von Array

  • Hallo,

    ich habe einige PC's in einem Array, von denen ich einen nach dem anderen die HDD-Kapazitäten auslesen möchte.
    Klappt soweit wunderbar. Nur möchte ich das mithilfe einer Progressbar auch optisch sichtbar machen, wie weit er
    forgeschritten ist. Wie gehe ich da am besten vor?
    Schauen wieviele Einträge in meinem Array sind, auslesen welche Zeile er aus dem Array gerade bearbeitet und
    dementsprechend die Progressbar verändern?

    2 Mal editiert, zuletzt von Scritch (13. April 2011 um 09:30)

  • wie soll man eine beantwortete Frage beantworten?

    Genau so.
    da die ProgressBar immer bis 100 zähle brauchst Du diese Zahl auch als Basis.
    Ist aber ein einfacher Dreisatz. ;)

    UBound($array)/100*$i wenn Du $i als Zählvariable für das Array verwendest...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • So viel zur Theorie. Verstanden wies geht habe ich.An der Umsetzung haperts aber wieder.

    [autoit]


    $Progress1 = GUICtrlCreateProgress(160, 168, 302, 16)
    for $a = 1 to ubound($pcname) - 1
    for $b = 1 to ubound($pcname) / 100 * $b
    GUICtrlSetData ( $Progress1, $pcname[$b] )
    Next
    Next

    [/autoit]

    So?

    Wenn ich nur

    [autoit]

    for $b = 1 to ubound($pcname) / 100 * $b
    GUICtrlSetData ( $Progress1, $pcname[$b] )
    Next

    [/autoit]


    nehme, dann arbeitet er ja nicht das Arrayab... Irgendwie...

    Edit1: Glaube bin auf dem richtigen Weg:

    Spoiler anzeigen
    [autoit]

    for $a = 1 to ubound($pcname) - 1
    $ping = Ping($pcname[$a], 500)
    if $ping then
    GUICtrlCreateLabel($pcname[$a], 16, 32, 68, 17)
    $ubound = ubound($pcname) / 100 * $a
    GUICtrlSetData ( $Progress1, $ubound )
    EndIf
    Next

    [/autoit]

    Immerhin bewegt sich die Progressbar... Nur noch nicht so ganz, wie sie soll.

    Sie ist schon bei 100%, obwohl noch nicht das ganze Array abgearbeitet wurde.

    Einmal editiert, zuletzt von Scritch (13. April 2011 um 08:56)

  • so?

    [autoit]


    #include <GUIConstants.au3>

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

    #region - GUI Create
    GUICreate('')
    GUISetState()
    #endregion
    Dim $pcname[5] = ['PC1','PC2','PC3','PC4','PC5']
    $Progress1 = GUICtrlCreateProgress(10, 168, 302, 16)
    for $a = 1 to ubound($pcname)
    GUICtrlSetData ( $Progress1, 100/Ubound($pcname) * $a)
    Sleep(250)
    Next

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

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit

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

    EndSelect
    WEnd
    #endregion

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (13. April 2011 um 09:06)