Problem mit Patcher...

  • Hallo Zusammen!

    Derzeit bin ich dabei einen Patcher für ein Projekt zu basteln. Eigentlich
    funktionierts, also die Files werden in die richtigen Ordner geladen.

    Allerdings gibt es folgendes Problem: Der Downloadbalken füllt sich nur
    wenn man den Ordner geöffnet hat, in dem die Datei landet die gerade
    runtergeladen wird und den Ordner mit F5 aktualisiert....

    Woran liegt das, also warum aktualisiert er nicht automatisch den Balken?

    Hier der Codeschnipsel vom Download:

    [autoit]

    $file_size = InetGetSize($patch_url & "\" & $datei) / 1048576
    $size_inet = Round($file_size, 2)
    $size_inet_orig = InetGetSize($patch_url & "\" & $datei)
    $size_ordner = FileGetSize($ScriptDir & "\" & $datei)

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

    If $size_inet_orig <> $size_ordner Then
    GUICtrlSetData($stat, @CRLF & "Datei " & "'" & $datei & "' - '" & $size_inet & " MB' wird aktualisiert..." & @CRLF & GUICtrlRead($stat))
    $hDownload = InetGet($patch_url & $datei , $ScriptDir& "\" & $datei , 1 , 1)
    While 1

    $size_file = FileGetSize($ScriptDir & "\" & $datei) / 1048576
    $size_file_fin = Round($size_file, 2)
    $iPercent = (100 * $size_file) / $size_inet
    GUICtrlSetData($Progress1, $iPercent)

    If $size_file_fin = $size_inet Then
    GUICtrlSetData($Progress1, 100)
    ExitLoop
    EndIf
    sleep (50)
    WEnd

    [/autoit]

    PS: Es funktioniert sonst alles, nur wie gesagt, der Balken
    füllt sich nur wenn man den Ordner aktualisiert in dem die
    Datei landet die gerade runtergeladen wird...

    Danke!

    2 Mal editiert, zuletzt von Kurikinton (28. April 2010 um 08:31)

  • Hmm im Grunde macht mein Script ja nichts anderes, nur das die Abfrage
    für den Downloadbalken noch drin is, was bei dir fehlt. Darum gehts ja... ;)

  • Moin,

    habe mich zwar noch nie mit diesem Thema befasst, aber hab mal sowas gesehen.
    Aber find den Thread nicht mehr!

    Aber probier mal folgendes:

    Spoiler anzeigen
    [autoit]


    $file_size = InetGetSize($patch_url & "\" & $datei)
    $size_inet = Round($file_size, 2)
    $size_ordner = FileGetSize($ScriptDir & "\" & $datei)

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

    If $file_size <> $size_ordner Then ;??
    $hDownload = InetGet($patch_url & $datei , $ScriptDir& "\" & $datei , 1 , 1)
    While @InetGetActive
    $iPercent = 100 * @InetGetBytesRead / $size_inet
    GUICtrlSetData($Progress1, $iPercent)
    sleep (10)
    Wend
    EndIf

    [/autoit]

    LG, Fabian

  • Hallo Kurikinton,

    anstelle das du die Größe des Files anhand von FileGetSize ermittelst kannst du doch auch mit

    [autoit]

    InetGetInfo($hDownload,0)

    [/autoit]

    direkt den Download messen. Also das ganze so machen:

    Spoiler anzeigen
    [autoit]

    $file_size = InetGetSize($patch_url & "\" & $datei) / 1048576
    $size_inet = Round($file_size, 2)
    $size_inet_orig = InetGetSize($patch_url & "\" & $datei)
    $size_ordner = FileGetSize($ScriptDir & "\" & $datei)

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

    If $size_inet_orig <> $size_ordner Then
    GUICtrlSetData($stat, @CRLF & "Datei " & "'" & $datei & "' - '" & $size_inet & " MB' wird aktualisiert..." & @CRLF & GUICtrlRead($stat))
    $hDownload = InetGet($patch_url & $datei , $ScriptDir& "\" & $datei , 1 , 1)
    While Not InetGetInfo($hDownload, 2)
    $size_file = InetGetInfo($hDownload,0) / 1048576
    $size_file_fin = Round($size_file, 2)
    $iPercent = (100 * $size_file) / $size_inet
    GUICtrlSetData($Progress1, $iPercent)
    sleep (50)
    WEnd
    GUICtrlSetData($Progress1, 100)

    [/autoit]

    @Fabian, du scheinst eine veraltete AutoIt-Version zu haben @InetGetActive und @InetGetBytesRead gibt es nicht mehr, dafür sind jetzt aber mehrere Downloads gleichzeitig möglich,

    mfg (Auto)Bert

  • Vielen Dank AutoBert, hat wunderbar funktioniert.
    Nuja, ich lag ja nicht so weit daneben... ;)