File Downloader

  • Und zwar habe ich die idee von hier.
    Will nur wissen ob meine variante bei euch auch klappt oder etwas kürzer geht.
    Der file downloader zieht mehre datein nach einander sobald eine fertig ist.

    Funktion des Scriptes

    - ladet nach einander die Links aus einer Datei runter.
    - geschätze Downloadzeit
    - Downloadspeed
    - Downloadname
    - Downloadgröße
    - Fortschritt anzeige

    Das ganze wird in einer Tooltip angezeigt

    Script 1.3

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <file.au3>
    #Include <Date.au3>
    #endregion

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

    Dim $aRecords

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

    $FileopenDialog = FileOpenDialog("", @UserProfileDir& "\", "Datei (*.*)", 1 + 4 )
    If @error Then
    MsgBox(4096,"Error" ,"No File(s) chosen")
    Exit
    EndIf

    If Not _FileReadToArray($FileopenDialog, $aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $a = 1 To $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    IniWrite(@ScriptDir & "\test.ini", "Download", $a, $aRecords[$a])
    $Test = StringSplit($aRecords[$a], "/")
    IniWrite(@ScriptDir & "\test.ini", "Namen", $a, $Test[$Test[0]])
    Next
    IniWrite(@ScriptDir & "\test.ini", "zahl", "Key", $aRecords[0])

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

    For $b = 1 To $aRecords[0]
    $var = IniRead(@ScriptDir & "\test.ini", "Download", $b, Default)
    ;MsgBox(4096, "Result", $var)
    Next

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

    Global Const $Groesen = StringSplit("KB|MB|GB|TB|?|", "|")
    Global Const $SpeedGroesen = StringSplit("kbps|Mbps|Gbps|Tbps|Pbps|?|", "|")
    Dim $File[IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)] = [IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)]
    Dim $Filename[IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)] = [IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)]

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

    For $c = 1 To IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)
    ;MsgBox(4096, "inet",IniRead(@ScriptDir & "\test.ini", "Download", $i, Default))
    Sleep(50)
    If FileExists(@DesktopDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default)) Then FileDelete(@ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    If FileExists(@ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default)) Then FileMove(@ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default), @ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    $sFILESIZE = InetGetSize(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default))
    $hDL = InetGet(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default), @ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default),1,1)
    $url = IniRead(@ScriptDir & "\test.ini", "Download", $c, Default)
    $tStart = TimerInit()
    Do
    $aDL_Info = InetGetInfo($hDL)
    $iPercent = _CalcPerformance($aDL_Info[0], $aDL_Info[2], $sFILESIZE, $tStart,IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default),_FormatFileSize(InetGetSize(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default))),$url)
    Until $aDL_Info[2]
    InetClose($hDL)
    FileDelete(@ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    ToolTip("Fertig")
    ToolTip("")
    Next
    FileDelete(@ScriptDir & "\test.ini")

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

    #cs
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    ******** ********
    ******** ********
    ******** Dies ist ein _CalcPerformance ********
    ******** Copyright: autoBert (http://www.autoit.de) ********
    ******** ********
    ******** ********
    ******** Es läuft zu 100% auf Windows XP ********
    ******** Es läuft zu 000% auf Windows Vista (wurde noch nicht getestet) ********
    ******** Es läuft zu 100% auf Windows 07 x64 7201 ********
    ******** Alle anderen Windows Versionen sind nicht getestet! ********
    ******** ********
    ******** Mit freundlicher Mithilfe von http://www.autoit.de ********
    ******** Danke an alle die mir mit diesem Projekt geholfen haben. *******
    ******** ********
    ******** Bei Fragen oder Problemen, schreib mir eine PN im Forum. ********
    ******** ********
    ******** ********
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    #ce
    Func _CalcPerformance($iRead, $bDone, $iSize, $tStart,$Name,$Groesse, $test)
    Local $tDiff = TimerDiff($tStart), $iRTime, $sMSG
    Local $iToDo = Round(($iSize - $iRead) / 1024, 2)
    Local $nKBPerSec = Round($iRead / $tDiff * 1000, 2)
    Local $iPercent = Round($iRead / $iSize * 100, 2)
    if ($iSize = 0) And Not $bDone Then
    $iRTime = "unbekannt"
    Else
    $iRTime = Round($iToDo / $nKBPerSec, 0)
    EndIf
    $sMSG = _FormatFileSize(Round($iRead, 0)) & " / " & _FormatFileSize(Round($iSize, 0))
    ;MsgBox (48, "", $sMSG )
    $Time1 = _SecToTime( Round(_FormatFileSize(Round($iSize, 0))/ _SpeedSize($nKBPerSec)),0)
    $TimeString = ""
    If $Time1[0] > 0 Then $TimeString = $Time1[0] & " sec " & $TimeString
    If $Time1[1] > 0 Then $TimeString = $Time1[1] & " min " & $TimeString
    If $Time1[2] > 0 Then $TimeString = $Time1[2] & " Std " & $TimeString
    If $Time1[3] > 0 Then $TimeString = $Time1[3] & " Tage" & $TimeString
    Sleep(750)

    ToolTip("File Name.: " & $Name & @CRLF & "Download Grösse.: "& $Groesse & @CRLF & "Status.: " & $sMSG & @CRLF & "Fortschritt.: " & Round($iPercent, 0) & " % " & @CRLF & "Downloadspeed.: " & _SpeedSize($nKBPerSec) & @CRLF & "Downloadzeit ca.: " & $TimeString, 50, 50, "Info", 1)

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

    Return Round($iPercent, 1) & " %"
    EndFunc ;==>_CalcPerformance
    #cs
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    ******** ********
    ******** ********
    ******** Dies ist ein _FormatFileSize & _SpeedSize & _SecToTime ********
    ******** Copyright: Jam00 (http://www.autoit.de) ********
    ******** ********
    ******** ********
    ******** Es läuft zu 100% auf Windows XP ********
    ******** Es läuft zu 000% auf Windows Vista (wurde noch nicht getestet) ********
    ******** Es läuft zu 100% auf Windows 07 x64 7201 ********
    ******** Alle anderen Windows Versionen sind nicht getestet! ********
    ******** ********
    ******** Mit freundlicher Mithilfe von http://www.autoit.de ********
    ******** Danke an alle die mir mit diesem Projekt geholfen haben. ********
    ******** ********
    ******** Bei Fragen oder Problemen, schreib mir eine PN im Forum. ********
    ******** ********
    ******** ********
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    #ce
    Func _FormatFileSize($sFunc_Size)
    Local $i = 0
    While $sFunc_Size > 1000
    $sFunc_Size /= 1024
    $i += 1
    WEnd
    If $i > 4 Then $i = 4
    Return Round($sFunc_Size, 2) & " " & $Groesen[$i]
    EndFunc ;==>_FormatFileSize

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

    Func _SpeedSize($Speeds)
    Local $si = 0
    While $Speeds > 1000
    $Speeds /= 1024
    $si+=1
    WEnd
    If $si > 5 Then $si = 5
    Return Round ($Speeds,2) & " " & $SpeedGroesen[$si]
    EndFunc ;==>_SpeedSize

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

    Func _SecToTime($Sec, $Flag = 0)
    Local $Rechner, $1, $Rest
    Local $Zeit[4] = [0, 0, 0, 0]
    $Zeit[0] = $Sec
    For $1 = 0 To 2
    If $1 < 2 Then
    $Rechner = 60
    Else
    $Rechner = 24
    EndIf
    If $Zeit[$1] > $Rechner - 1 Then
    $Rest = Mod($Zeit[$1], $Rechner)
    $Zeit[$1 + 1] = ($Zeit[$1] - $Rest) / $Rechner
    $Zeit[$1] = $Rest
    EndIf
    Next
    If $Flag = 1 Then
    Local $sZeit, $State = 0
    For $1 = 3 To 0 Step -1
    If $Zeit[$1] > 0 Then
    $State = 1
    $sZeit &= $Zeit[$1] & ":"
    ElseIf $State = 1 Then
    $sZeit &= $Zeit[$1] & ":"
    EndIf
    Next
    Return StringTrimRight($sZeit, 1)
    EndIf
    Return $Zeit
    EndFunc ;==>_SecToTime

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

    ini Datei

    Spoiler anzeigen
  • Hallo SiroCool,

    was soll die von dir gefakte CopyRight-Meldung?

    Zitat

    die func Calc-Performance ist im Original von autoBert

    Quelle: http://www.autoitbot.de/board3-coding-…oder/#post64003
    Ich habe die Originalroutine ohne CopyRight-Meldung veröffentlicht, dass der kleine Zauberlehrling sie benutzt und etwas für deine Bedürfnisse anpasst ist daher in Ordnung du hast sie auch wieder etwas angepasst. Im übrigen kann man eine einfache Prozentrechnung in diesem Zusammenhang eh nicht mit CopyRight versehen,

    mfg autoBert

  • brauche mal da hilfe etwas und zwar habe ich es jetzt vor ,daß das ganze in ListView angeziegt wird was vorherr in toltip war.
    oder wie würdet ihr es machen ?


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #Include <Date.au3>
    #include-once
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>

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

    #include <GuiListView.au3>
    #include<GUIImageList.au3>

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

    #include <GuiToolbar.au3>
    #include <ToolbarConstants.au3>

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

    #include <String.au3>
    #cs
    ****************************************************************************************
    *** ***
    *** Taskbar ***
    *** ***
    ****************************************************************************************
    #ce
    $Handle = WinGetHandle("[CLASS:Shell_TrayWnd]")
    Dim $Pos[2]
    $Pos[0] = @DesktopWidth -810
    $Pos[1] = @DesktopHeight-350-WInGetPos($Handle)
    #cs
    ****************************************************************************************
    *** ***
    *** Containerfiles ***
    *** ***
    ****************************************************************************************
    #ce
    $Container = "*.rsdf|*.ccf|*.dlc"
    $one = StringSplit($Container, "|")

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

    Global Const $Groesen = StringSplit("KB|MB|GB|TB|?|", "|")
    Global Const $SpeedGroesen = StringSplit("kbps|Mbps|Gbps|Tbps|Pbps|?|", "|")
    Dim $File[IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)] = [IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)]
    Dim $Filename[IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)] = [IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)]

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

    #Region ### START Koda GUI section ### Form=C:\Users\Sirocool\Desktop\Form1.kxf
    $Form1 = GUICreate("File Download 1.4", 800, 280, $Pos[0], $Pos[1], $GUI_SS_DEFAULT_GUI, BitOR($WS_EX_ACCEPTFILES,$WS_EX_APPWINDOW,$WS_EX_CONTEXTHELP,$WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00040008);slide-in
    GUISetFont(8, 400, 0, "Verdana")
    $MenuItem1 = GUICtrlCreateMenu("Datei")
    $MenuItem2 = GUICtrlCreateMenu("MenuItem4", $MenuItem1)
    $MenuItem3 = GUICtrlCreateMenuItem("MenuItem5", $MenuItem2)
    $MenuItem4 = GUICtrlCreateMenuItem("MenuItem3", $MenuItem1)
    $MenuItem5 = GUICtrlCreateMenu("Werkzeuge")
    $MenuItem6 = GUICtrlCreateMenu("Sprache")
    $MenuItem7 = GUICtrlCreateMenu("File Hoster")
    GUICtrlCreateMenu("||")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $MenuItem8 = GUICtrlCreateMenu("Entwickler Support")
    GUICtrlCreateMenu("||")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $MenuItem9 = GUICtrlCreateMenu("Hilfe")

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

    $ImageList1 = _GUIImageList_Create( 25, 25, 5)
    _GUIImageList_AddIcon($ImageList1, @SystemDir & "\wpdshext.dll", 2, True)
    _GUIImageList_AddIcon($ImageList1, @SystemDir & "\wpdshext.dll", 6, True)


    $hToolbar = _GUICtrlToolbar_Create ($Form1,0)
    _GUICtrlToolbar_GetMaxSize ($hToolbar)
    _GUICtrlToolbar_SetImageList($hToolBar, $ImageList1)
    _GUICtrlToolbar_AddButton ($hToolbar, 0, 0)
    _GUICtrlToolbar_AddButton ($hToolbar, 1, 1)

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

    GUISetBkColor(0xFFFFFF)
    $List1 = GUICtrlCreateListView("Nr.|Paket/Datei|Größe|Geladen|Anbieter|Status|Speed|Fortschritt|#", 0, 40, 800, 197)
    ;$List1_0 = GUICtrlCreateListViewItem("01|Photoshop|1,01 GB|200,00 Mb|http://www.Megaupload.com|1 h 40 min 06 sec|150 KB/s|25 %",$List1)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 80)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 80)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 150)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 60)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 6, 80)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 7, 80)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 8, 25)
    GUICtrlSetFont(-1, 8, 400, 2, "Verdana")
    GUICtrlSetColor(-1, 0xC0C0C0)
    $Button1 = GUICtrlCreateButton("Suchen", 720, 8, 75, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Combo1 = GUICtrlCreateCombo("Combo1", 440, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Input1 = GUICtrlCreateInput("Input1", 592, 8, 121, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)

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

    Dim $StatusBar1_PartsWidth[1] = [-1]
    _GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
    _GUICtrlStatusBar_SetText($StatusBar1, @TAB & "© Copyright 2011 Copyright Sirocool - All Rights Reserved", 0)
    _GUICtrlStatusBar_SetBkColor($StatusBar1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg(1)
    $WINPOS = WinGetPos($Form1)
    Switch $nMsg[1]
    Case $Form1
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00050004);slide-out
    Exit

    Case $MenuItem3
    Laden()
    ;$open = FileOpenDialog("Container Files", @DesktopDir & "", "Contanier (*.dlc;*.ccf)|Speedfiles (*.sjc;*.acc)", 1 + 4 )

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



    EndSwitch

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

    EndSwitch
    WEnd

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

    Func Laden()
    Dim $aRecords
    $open = FileOpenDialog("Container Files", @DesktopDir & "", "Contanier (*.dlc;*.ccf)|Speedfiles (*.sjc;*.acc)| Textfiles (*.txt)", 1 + 4 )
    If @error Then
    MsgBox(4096,"Error" ,"No File(s) chosen")
    Else
    For $i = 1 To 1000
    $Read = FileReadLine($open, $i)
    If Not @error Then
    $Ex = _StringExplode($Read, "/", 0)
    _GUICtrlListView_AddItem($List1, $i)
    _GUICtrlListView_SetItemText($List1, _GUICtrlListView_GetItemCount($List1) - 1, $Ex[3], 1)
    _GUICtrlListView_SetItemText($List1, _GUICtrlListView_GetItemCount($List1) - 1, $Ex[2], 4)
    ElseIf Not _FileReadToArray($open, $aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    EndIf
    Next
    EndIf
    For $a = 1 To $aRecords[0]
    ;Msgbox(0,'Record:' & $a, $aRecords[$a]);zurkontrolle
    IniWrite(@ScriptDir & "\test.ini", "Download", $a, $aRecords[$a])
    $Test = StringSplit($aRecords[$a], "/")
    IniWrite(@ScriptDir & "\test.ini", "Namen", $a, $Test[$Test[0]])
    IniWrite(@ScriptDir & "\test.ini", "zahl", "Key", $aRecords[0])
    Next

    For $b = 1 To $aRecords[0]
    $var = IniRead(@ScriptDir & "\test.ini", "Download", $b, Default)
    ;MsgBox(4096, "Result", $var)
    Next

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

    For $c = 1 To IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)
    ;MsgBox(4096, "inet",IniRead(@ScriptDir & "\test.ini", "Download", $i, Default))
    Sleep(50)
    If FileExists(@DesktopDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default)) Then FileDelete(@ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    If FileExists(@ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default)) Then FileMove(@ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default), @ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    $sFILESIZE = InetGetSize(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default))
    $hDL = InetGet(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default), @ScriptDir & "\" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default),1,1)
    $url = IniRead(@ScriptDir & "\test.ini", "Download", $c, Default)
    $tStart = TimerInit()
    Do
    $aDL_Info = InetGetInfo($hDL)
    $iPercent = _CalcPerformance($aDL_Info[0], $aDL_Info[2], $sFILESIZE, $tStart,IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default),_FormatFileSize(InetGetSize(IniRead(@ScriptDir & "\test.ini", "Download", $c, Default))),$url)
    Until $aDL_Info[2]
    InetClose($hDL)
    FileDelete(@ScriptDir & "\" & "old_" & IniRead(@ScriptDir & "\test.ini", "Namen", $c, Default))
    ToolTip("Fertig")
    ToolTip("")
    Next
    FileDelete(@ScriptDir & "\test.ini")

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

    EndFunc ;==>Laden

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

    Func _download()

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

    EndFunc

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

    #cs
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    ******** ********
    ******** ********
    ******** Dies ist ein _CalcPerformance ********
    ******** Copyright: autoBert (http://www.autoit.de) ********
    ******** ********
    ******** ********
    ******** Es läuft zu 100% auf Windows XP ********
    ******** Es läuft zu 000% auf Windows Vista (wurde noch nicht getestet) ********
    ******** Es läuft zu 100% auf Windows 07 x64 7201 ********
    ******** Alle anderen Windows Versionen sind nicht getestet! ********
    ******** ********
    ******** Mit freundlicher Mithilfe von http://www.autoit.de ********
    ******** Danke an alle die mir mit diesem Projekt geholfen haben. *******
    ******** ********
    ******** Bei Fragen oder Problemen, schreib mir eine PN im Forum. ********
    ******** ********
    ******** ********
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    #ce
    Func _CalcPerformance($iRead, $bDone, $iSize, $tStart,$Name,$Groesse, $test)
    Local $tDiff = TimerDiff($tStart), $iRTime, $sMSG
    Local $iToDo = Round(($iSize - $iRead) / 1024, 2)
    Local $nKBPerSec = Round($iRead / $tDiff * 1000, 2)
    Local $iPercent = Round($iRead / $iSize * 100, 2)
    if ($iSize = 0) And Not $bDone Then
    $iRTime = "unbekannt"
    Else
    $iRTime = Round($iToDo / $nKBPerSec, 0)
    EndIf
    $sMSG = _FormatFileSize(Round($iRead, 0)) & " / " & _FormatFileSize(Round($iSize, 0))
    ;MsgBox (48, "", $sMSG )
    $Time1 = _SecToTime( Round(_FormatFileSize(Round($iSize, 0))/ _SpeedSize($nKBPerSec)),0)
    $TimeString = ""
    If $Time1[0] > 0 Then $TimeString = $Time1[0] & " sec " & $TimeString
    If $Time1[1] > 0 Then $TimeString = $Time1[1] & " min " & $TimeString
    If $Time1[2] > 0 Then $TimeString = $Time1[2] & " Std " & $TimeString
    If $Time1[3] > 0 Then $TimeString = $Time1[3] & " Tage" & $TimeString
    Sleep(750)

    ToolTip("File Name.: " & $Name & @CRLF & "Download Grösse.: "& $Groesse & @CRLF & "Status.: " & $sMSG & @CRLF & "Fortschritt.: " & Round($iPercent, 0) & " % " & @CRLF & "Downloadspeed.: " & _SpeedSize($nKBPerSec) & @CRLF & "Downloadzeit ca.: " & $TimeString, -1, -1, "Info", 1)

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

    Return Round($iPercent, 1)
    EndFunc ;==>_CalcPerformance
    #cs
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    ******** ********
    ******** ********
    ******** Dies ist ein _FormatFileSize & _SpeedSize & _SecToTime ********
    ******** Copyright: Jam00 (http://www.autoit.de) ********
    ******** ********
    ******** ********
    ******** Es läuft zu 100% auf Windows XP ********
    ******** Es läuft zu 000% auf Windows Vista (wurde noch nicht getestet) ********
    ******** Es läuft zu 100% auf Windows 07 x64 7201 ********
    ******** Alle anderen Windows Versionen sind nicht getestet! ********
    ******** ********
    ******** Mit freundlicher Mithilfe von http://www.autoit.de ********
    ******** Danke an alle die mir mit diesem Projekt geholfen haben. ********
    ******** ********
    ******** Bei Fragen oder Problemen, schreib mir eine PN im Forum. ********
    ******** ********
    ******** ********
    ****************************************************************************************
    ****************************************************************************************
    ****************************************************************************************
    #ce
    Func _FormatFileSize($sFunc_Size)
    Local $i = 0
    While $sFunc_Size > 1000
    $sFunc_Size /= 1024
    $i += 1
    WEnd
    If $i > 4 Then $i = 4
    Return Round($sFunc_Size, 2) & " " & $Groesen[$i]
    EndFunc ;==>_FormatFileSize

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

    Func _SpeedSize($Speeds)
    Local $si = 0
    While $Speeds > 1000
    $Speeds /= 1024
    $si+=1
    WEnd
    If $si > 5 Then $si = 5
    Return Round ($Speeds,2) & " " & $SpeedGroesen[$si]
    EndFunc ;==>_SpeedSize

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

    Func _SecToTime($Sec, $Flag = 0)
    Local $Rechner, $1, $Rest
    Local $Zeit[4] = [0, 0, 0, 0]
    $Zeit[0] = $Sec
    For $1 = 0 To 2
    If $1 < 2 Then
    $Rechner = 60
    Else
    $Rechner = 24
    EndIf
    If $Zeit[$1] > $Rechner - 1 Then
    $Rest = Mod($Zeit[$1], $Rechner)
    $Zeit[$1 + 1] = ($Zeit[$1] - $Rest) / $Rechner
    $Zeit[$1] = $Rest
    EndIf
    Next
    If $Flag = 1 Then
    Local $sZeit, $State = 0
    For $1 = 3 To 0 Step -1
    If $Zeit[$1] > 0 Then
    $State = 1
    $sZeit &= $Zeit[$1] & ":"
    ElseIf $State = 1 Then
    $sZeit &= $Zeit[$1] & ":"
    EndIf
    Next
    Return StringTrimRight($sZeit, 1)
    EndIf
    Return $Zeit
    EndFunc ;==>_SecToTime

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hallo SiroCool,

    du kannst ja mit

    [autoit]

    _GUICtrlListView_SetItemText

    [/autoit]

    jedem einzelnen SubItem den Wert zuweisen. Ich finde die Idee gut,

    mfg autoBert

  • Leider spinnt der ab den donload 4 in der Listenview

    Spoiler anzeigen
    [autoit]


    Func _CalcPerformance($iRead, $bDone, $iSize, $tStart,$Name,$Groesse, $test, $dnr)
    ;MsgBox(4096, "inet",$dnr-1)
    Local $tDiff = TimerDiff($tStart), $iRTime, $sMSG
    Local $iToDo = Round(($iSize - $iRead) / 1024, 2)
    Local $nKBPerSec = Round($iRead / $tDiff * 1000, 2)
    Local $iPercent = Round($iRead / $iSize * 100, 2)
    if ($iSize = 0) And Not $bDone Then
    $iRTime = "unbekannt"
    Else
    $iRTime = Round($iToDo / $nKBPerSec, 0)
    EndIf
    $sMSG = _FormatFileSize(Round($iRead, 0)) & " / " & _FormatFileSize(Round($iSize, 0))
    ;MsgBox (48, "", $sMSG )
    $Time1 = _SecToTime( Round(_FormatFileSize(Round($iSize, 0))/ _SpeedSize($nKBPerSec)),0)
    $TimeString = ""
    If $Time1[0] > 0 Then $TimeString = $Time1[0] & " sec " & $TimeString
    If $Time1[1] > 0 Then $TimeString = $Time1[1] & " min " & $TimeString
    If $Time1[2] > 0 Then $TimeString = $Time1[2] & " Std " & $TimeString
    If $Time1[3] > 0 Then $TimeString = $Time1[3] & " Tage" & $TimeString
    Sleep(275)
    _GUICtrlListView_DeleteAllItems($List1)
    ;ToolTip("File Name.: " & $Name & @CRLF & "Download Grösse.: "& $Groesse & @CRLF & "Status.: " & $sMSG & @CRLF & "Fortschritt.: " & Round($iPercent, 0) & " % " & @CRLF & "Downloadspeed.: " & _SpeedSize($nKBPerSec) & @CRLF & "Downloadzeit ca.: " & $TimeString, -1, -1, "Info", 1)
    _GUICtrlListView_SetItemText($List1, $dnr - 1, $Name, 1);Name
    _GUICtrlListView_SetItemText($List1, $dnr - 1, $Groesse, 2);Downloadgröße
    _GUICtrlListView_SetItemText($List1, $dnr - 1, _FormatFileSize(Round($iRead, 0)), 3);Geladen
    ;_GUICtrlListView_SetItemText($List1, $dnr - 1, _FormatFileSize(Round($iRead, 0)), 4);Hoster
    _GUICtrlListView_SetItemText($List1, $dnr - 1, $TimeString, 5);Status/ Time
    _GUICtrlListView_SetItemText($List1, $dnr - 1, _SpeedSize($nKBPerSec), 6);Speed
    _GUICtrlListView_SetItemText($List1, $dnr - 1, Round($iPercent, 0) & " % " , 7);Fortschritt
    Return Round($iPercent, 1)
    EndFunc ;==>_CalcPerformance

    [/autoit]
  • Also abgesehen davon, dass dein Skript bei mir leider überhaupt nicht funktioniert ( ToolTip erscheint, jedoch stimmen die Daten und der Download nicht) hätte ich da etwas Anderes an deinem "Programmierstil" zu bemängeln.

    Du solltest Daten bevor sie verwendet werden, besonders aus einer Datei wie z.B. einer Ini, validieren.

    Beispiel hier:

    [autoit]


    Dim $File[IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)] = [IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)]

    [/autoit]

    Könnte man so machen:

    [autoit]


    $index = IniRead(@ScriptDir & "\test.ini", "Zahl", "key", Default)
    $iDl_nr = IniRead(@ScriptDir & "\test.ini", "Download", Default, Default)
    If $index > 0 And $iDl_nr > 0 Then
    Dim $File[$index] = [$iDl_nr]
    Endif

    [/autoit]

    Validierst du zuvor dein "Eingelesenes" oder auch einfach Variablen, so kannst du falls später immernoch Fehler auftauchen sollten, diesen schneller einkreisen.
    Sollte nur ein Tipp sein. Vielleicht etwas zu OP.