InetGet & Background = 1

  • Moin moin Leutz,

    ich hab n seltsammes Problem, nämlich das er mir als Ausgabe des Splahs mit dem Prozent immer 0% zeigt.
    Hier mal ein Codeausschnitt den ich isoliert habe:

    Spoiler anzeigen
    [autoit]


    Global Const $InetUpdateVersionPath = "http://home.arcor.de/doppelmoppelmord/calc++/version.txt"
    Global Const $InetUpdateVersionName = "version.txt"
    Global Const $InetUpdatePath = "http://home.arcor.de/doppelmoppelmord/calc++/CalcUpdate.exe"
    Global Const $InetUpdateName = "CalcUpdate.exe"
    Global Const $Version = "1.2 Beta"

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

    _Menu_Updates()

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

    Func _Menu_Updates()
    Filedelete(@tempdir & "\" & $InetUpdateVersionName)
    Filedelete(@tempdir & "\" & $InetUpdateName)
    If Msgbox(65,"Updates","Calc++ wird nun im Internet nach Updates suchen, fortfahren?") <> 1 Then
    Return 0
    EndIf
    $InternetGet = InetGet($InetUpdateVersionPath,@tempdir & "\version.txt",1)
    IF @error Then
    Msgbox(48,"Fehler","Es ist ein Fehler aufgetreten, entweder besteht keine Internetverbindung oder" & @CRLF & "die Versionsinformationen sind zur Zeit nicht verfügbar.")
    Return 0
    EndIf
    $InternetVersion = FileRead(@tempdir & "\version.txt")
    IF $InternetVersion <> $Version Then
    If Msgbox(52,"Neue Version","Es ist eine Neue Version verfügbar, soll diese nun heruntergeladen und installiert werden?") <> 6 Then
    Return 0
    EndIf
    Else
    Msgbox(64,"Aktuell","Calc++ ist auf dem aktuellsten Stand.")
    Return 0
    EndIf
    $InetSize = InetGetSize($InetUpdatePath)
    msgbox(0,"inetsize",$InetSize) ;########WEG
    If @error Then
    Msgbox(48,"Fehler","Es ist ein Fehler aufgetreten, möglicherweise ist der FTP Server zur Zeit nicht erreichbar.")
    Return 0
    EndIf
    SplashTextOn("","Lade herunter...",250,20,Default,Default,1)
    InetGet($InetUpdatePath,@tempdir & "\" & $InetUpdateName,1,1)
    If @error Then
    Splashoff()
    Msgbox(48,"Fehler","Es ist ein Fehler aufgetreten, möglicherweise ist der FTP Server zur Zeit nicht erreichbar.")
    Return 0
    EndIf
    While @InetGetActive
    SplashOff()
    $InetUpdateProzent = $InetSize/@InetGetBytesRead/100
    SplashTextOn("","Lade herunter... " & $InetUpdateProzent & "% fertig",250,20,Default,Default,1)
    sleep(50)
    WEnd
    SplashOff()
    Run(@Tempdir & "\CalcUpdate.exe")
    Exit
    EndFunc

    [/autoit]

    greeeeeeeeeeeeeeetz

    Einmal editiert, zuletzt von qon (30. Januar 2008 um 12:50)

  • Prozent sind:
    Geladen * 100 / Gesamt. nicht
    $InetSize/@InetGetBytesRead/100

    also
    @InetGetBytesRead * 100 /$InetSize

  • yo

    geht immernoch nicht, wenn ich die sleep(50) mal auf 200ms mache sehe ich, dass ganz kurz 0% erscheinen, allerdings danach kommt garnichts mehr von %.
    Dann zeigt er praktisch wieder den Splash von davor ohne irgendetwas.
    Er läds zwar richtig runter und führts aus, aber die anzeige kommt einfach nicht.
    ich hab ka was ich falsch mache
    edit: er zeigt doch die splash aus der loop, aber er lässt net nur zahl% weg sondern auch das fertig dahinter.. also irgendwie alles was nach der Variable in der Inputbox kommt

  • Die Zahl wird zu lang :) Du musst runden:
    $InetUpdateProzent = Round(@InetGetBytesRead * 100 /$InetSize,1)
    Hier auf 1 Stelle nach Komma!