Hallo, ich habe das Problem, dass der Gesamtfortschritt bei meinem Downloader / Minipatcher nicht richtig aktualisiert wird.
Weiß vielleicht jemand wieso?
Skript :
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <File.au3>
#include <Array.au3>
#include <Crypt.au3>
#include <Inet.au3>
HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16")
$Form1 = GUICreate("Miniloader", 615, 294, 186, 214)
$ProgressGesamt = GUICtrlCreateProgress(8, 232, 598, 17)
$ProgressEinzeln = GUICtrlCreateProgress(8, 272, 598, 17)
$LabelDatei = GUICtrlCreateLabel("Datei", 8, 256, 445, 17)
$LabelTotalfortschritt = GUICtrlCreateLabel("Totalfortschritt", 8, 208, 443, 17)
Global $WebspaceAdresse = "MeinWebspaceName", $ProgressStatusGesamt = 0 , $PDatalist = @ScriptDir & "\Data\DataList.txt" , $Lines
GUISetState(@SW_SHOW)
#region Datalist Überprüfung und gegebenenfalls Aktualisierung
If InetGetSize($WebspaceAdresse & "DataList.txt") <> FileGetSize(@ScriptDir & "\Data\DataList.txt") Then
InetGet($WebspaceAdresse & "DataList.txt",@ScriptDir & "\Data\DataList.txt")
If @Error Then MsgBox(64,"Fehler","Fehler beim herunterladen der Datalist.txt von :" & $WebspaceAdresse & "DataList.txt")
ElseIf Not FileExists(@ScriptDir & "\Data\DataList.txt") Then
InetGet($WebspaceAdresse & "DataList.txt",@ScriptDir & "\Data\DataList.txt")
If @Error Then MsgBox(64,"Fehler","Fehler beim herunterladen der Datalist.txt von :" & $WebspaceAdresse & "DataList.txt")
EndIf
#endregion Datalist Überprüfung und gegebenenfalls Aktualisierung
#region Datalist.txt öffnen und lesen
$OpenDatalist = FileOpen(@ScriptDir & "\Data\DataList.txt")
$ReadDatalist = FileRead($OpenDatalist)
#endregion Datalist.txt öffnen und lesen
#region Gesamtbytes ermitteln und Md5 Hashes überprüfen
If StringInStr($ReadDatalist, 'Gesamt: "') Then
$BytesGesamt = _StringBetween($ReadDatalist, 'Gesamt: "', '"')
ConsoleWrite("Gesamtbytes : " & $BytesGesamt[0] & @CRLF)
_FileReadToArray($PDatalist,$Lines)
For $i = 1 to _FileCountLines($PDatalist) -1
$SplitLine = StringSplit($Lines[$i],'|')
GuiCtrlSetData($LabelDatei,"Überprüfen von " & $SplitLine[1])
If Not FileExists($SplitLine[1]) or Not (_Crypt_HashFile($SplitLine[1],$CALG_MD5) == $SplitLine[2]) Then
Local $DownloadData = InetGet($WebspaceAdresse & $SplitLine[1],@ScriptDir & '\' & $SplitLine[1],0,1)
If @Error Then MsgBox(64,"Fehler","Die Datei " & $SplitLine[1] & " konnte nicht heruntergeladen werden.")
GuiCtrlSetData($LabelDatei,"Downloaden von " & $SplitLine[1])
Do
GuiCtrlSetData($ProgressEinzeln,(100/$SplitLine[3])*InetGetInfo($DownloadData,0))
$ProgressStatusGesamt += (100/$BytesGesamt)*InetGetInfo($DownloadData)
GuiCtrlSetData($ProgressGesamt,$ProgressStatusGesamt)
Until InetGetInfo($DownloadData,2)
GuiCtrlSetData($ProgressEinzeln,100)
Else
$ProgressStatusGesamt += (100/$BytesGesamt)*$SplitLine[3]
GuiCtrlSetData($ProgressGesamt,$ProgressStatusGesamt)
EndIf
Next
GuiCtrlSetData($LabelTotalfortschritt,"Patchvorgang erfolgreich abgeschlossen")
GuiCtrlSetData($LabelDatei,"")
While 1
sleep(20)
WEnd
Else
ConsoleWrite($ReadDatalist & @CRLF)
MsgBox(64, "Fehler", "Es fehlt die Angabe der Gesamtbytes in der DataList.txt")
EndIf
Mit freundlichen Grüßen,
Julien