Click to See Complete Forum and Search --> : Determining Time Left In Donwload Process
Eric M
Jan 25th, 2000, 02:26 AM
Ok ive been stumped on this for a while. Plus im not math wizard but I have made a program that will update all of my programs via the internet and I have the percent the two totals(amount downloaded, amount left) and I have the Kbps. I have all that info done but I cant figure out how to show the estimated amount of time left. If someone can help me I would greatly appreciate it!!
Thanx
andymac
Jan 25th, 2000, 03:26 AM
Hi,
The important thing here is that if you don't know the file size, there is no way that you can know how long it's going to take to download.
So in pseudo code;
---START---
dim StartTime
dim CurrentTime
dim EndTime
dim FileSize
dim AmountDownloaded
StartTime = now()
filesize = filelen(Myfile)
'then at intervals which you choose, maybe every 1K or 10 seconds (whatever you want)
Amountdownloaded = however much you've downloaded
CurrentTime = now()
'Therefore
Duration = currenttime - starttime
'You know the amount you've downloaded, so you know that the amount you've got left to download is;
FileSize - AmountDownloaded
'You know that to download the amount you've got so far took "Duration" therefore the download rate it;
DownloadRate = Amountdownloaded / Duration
'So to download the remaining amount (assuming the same download rate) is going to be;
(FileSize - Amountdownloaded) / Downloadrate
Eg;
StartTime = 10 (seconds)
FileSize is 500bytes
After 15 seconds of downloading, we've downloaded 125bytes so
Duration = 15 (25-10)
Amountdownloaded = 90
Amount remainging to download = 375
Download rate = 90/15 = 6 bytes per second
So as we know we've got 500-90 bytes left to go;
(500-90) / 6 = 410/6 = 68.333 seconds from the Current time, so
End Time = Currenttime + 68.333, i.e., 25 + 68.333
= 93.333 seconds
Total duration will be 93.333-10 = 83.333
which is also 500 / 6
Hope that helps
Cheers
Andy
MartinLiss
Jan 25th, 2000, 03:31 AM
Try something like this
Dim dblTotKBs As Double ' Total KBs in the file
Dim dblKBPS As Double ' Download speed
Dim dblKBsDownloaded As Double ' KBs downloaded
Dim dblSecsRemaining As Double
' dblTotKBs = 350000
' dblKBPS = 14000
' dblKBsDownloaded = 2550
dblSecsRemaining = (dblTotKBs - dblKBsDownloaded) / dblKBPS
MsgBox dblKBsDownloaded & " of " & dblTotKBs & " downloaded" _
& vbCrLf & vbCrLf _
& Format(dblSecsRemaining, 0) & " Seconds left"
------------------
Marty
Why is it called lipstick if you can still move your lips?
vbforums.com
Copyright Internet.com Inc., All Rights Reserved.