|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Короче есть процесс DownLoad. Скачиваем файл 15234545787878байт Скачали 55566785755байт за время 8777мс Цифры произвольные, думать над ними не надо. Надо: 1) Отобразить скачано/всего (байт Кбайт МБ) 2) Отобразить Kbps (mbps,х.зпс) В общем отобразить все это красиво как положено, т.е. отформатировать как надо, как IE т.е. делает когда скачивает. То что 1Кб=1024байта мне известно, в KBPs вообще не разбираюсь и подозреваю что в черновом коде(ниже) вообще ерунда, и кажется завышает на порядок. В общем то мне на все эти кбпс-понятия наплевать, но вставлять в прогу явную чушь как бы тоже неохота. nRead-прочитано байт nFull-всего байт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как бы эти показания все облагородить? Иными словами не даст ли мне кто готовую ф-цию для отображения форматированных байт/кБ/мб а также вычисления/форматированного отображения кБпС-ов всяких (буквы извернул нарочно чтоб подчеркнуть свое непонимание этих единиц измерения). Помогите, а то умучился с этими способами асинхронных закачек, думать над этими школьными форматированиями уже голова не варит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 09:05 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Для начала, nRead это сколько всего прочитано из nFull? Умножать на 8 зачем? Ты уж определись, килобайты или килобиты тебе нужны. А делить все равно нужно на 1024, а не 1000. Что такое NetGrab1.Duration? Если время, прошедшее с начала закачки, то ты считаешь среднюю скорость за все это время. Короче, все это муть. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 12:25 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Хотя я не знаю, как часто срабатывает DownloadFileProgress, скорее всего разницу во времени нужно считать в миллисекундах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 12:30 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
AntonariyА делить все равно нужно на 1024, а не 1000. Короче, все это муть. Там какая-то муть со стандартом. Выяснять разницу KB/sec Kbps и kbps у меня желания нет. Но я с равнивал с IE, он делит на 1000 и пишет KB/sec . В принципе я все уже сделал NetGrab1.Duration-время прошедшее с закачки в миллисекундах. Срабатывает довольно часто, поэтому обновлять текст лучше по таймеру раз в 1сек. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98.
Собственно я занят подгонкой под себя вот энтого: How To Use the AsyncRead Method to Download Files Готовый хороший пример: http://vb.mvps.org/samples/NetGrab/ + предыстория в 2-х моих недавних топиках. Как думаете, оно того стоит? Планирую использовать для чтения текстовухи с сервера в переменную и для контролируемой загрузки файла (с прогрессбаром). Через wininet API я обломался, натолкнувшись на сложности асинхронного подхода, а Inet-control требует ocx, по религиозным соображениям таскать ее за программой не хочу. Плюс те 2 метода не очень нравятся антивирусам. А на этот 2 дня назад смотрел как на новые ворота, но вроде понравилось в итоге. User Control ведь за собой не надо таскать? Муть конечно, но метод вроде как "родной-майкрософтовский". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 13:29 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Дмитрий77Как думаете, оно того стоит?Только лишь ради прогрессбара и циферок, на которые не смотрит 99% пользователей, я бы не стал городить такие огороды. Дмитрий77Муть конечно, но метод вроде как "родной-майкрософтовский".Я имел ввиду расчет скорости. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 14:32 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Antonariy, Бог с ними с циферьками, хотя куда эти пользователи еще смотрят.... Проблема возникла в другом, я описывал в соседней теме. В случае когда интернет типа есть, но на самом деле нет (отключен в роутере) при синхронном запросе через wininet API вся программа будет висеть (~10-15сек) до получения error. Поэтому я и спрашиваю вашего авторитетного мнения про две ссылки что внизу (насчет UserControl ). Надо просто скачать и глянуть исходный (не испорченный "циферьками" пример). Конкренто вот этот: http://vb.mvps.org/samples/snatch.asp?id=NetGrab И сказать, что думаете. Или возможно Вам будет под силу вылечить уникальный API-вариант? здесь в конце взгляните. http://www.sql.ru/forum/actualthread.aspx?tid=385335 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 15:07 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
А с другой стороны, может случайно известен способ контролируемо и грамотно вызвать родное окно? Тогда вопрос о прогрессбаре и загрузке большого файла вообще можно снять. (потому что ниже безграмотно). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 15:17 |
|
Байты, кбайты,Мбайты Kbps kbps
|
|||
---|---|---|---|
#18+
Короче, NetGrab/UserControl решение пока решил не использовать но иметь ввиду на будущее. Оно хорошо именно когда надо встроить прогрессбар в рюшечки. Т.к. я стараюсь придерживаться Windows а не custom стандартов оформления, то использовать такой прогрессбар означает полностью перерисовать диалог "Загрузка файла", что конечно мне под силу, но в данном случае как заметил Antonariy не стоит городить такие огороды, да и при выходе новой версии IE он станет нестандартным. Имело бы смысл, если б новая версия скачивалась и без спроса устанавливалась по одному подтверждению, но "без спроса" пока не планируется. В этих всех делах еще есть подводные камни: 1) Автономный режим IE 2) Internet Explorer Enhanced Security Cofiguration и фиг знает чего еще. Поэтому все таки остановился на следующем: 1) Для чтения короткого текстового файла (в частности с информацией об New Version) использовать Microsoft Internet Transfer Control 6.0 (SP6) с корректной инсталляцией/регистрацией OCX через setup приложения. 2) Для загрузки/запуска файла использовать стандартное диалоговое окно IE "Загрузка файла" по методу: Код: plaintext 1. 2. 3. 4. 5. 6.
(1) позволяет избежать висяка программы, т.к. работает асинхронно и всегда возвращает результат, пусть пустой через 10сек в случае неуспеха(нет связи с сайтом, автономный режим и т.п.) но всегда возвращает. Здесь нужна надежность, ибо этот пункт выполняется при каждом старте программы. (2) успех (2) практически всегда гарантирован, т.к. в случае неуспеха (1) событие (2) никогда не вызывается. Вероятность неуспеха (2) ничтожно мала, в крайнем плохом случае мы получим 1 незакрытый процесс IEXPLORER но на это можно наплевать, т.к. систему это точно не положит. В конце концов не GetWrite пишу. В общем полегчало. Надо остановиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2010, 01:52 |
|
|
start [/forum/topic.php?fid=60&msg=37019773&tid=2159139]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 345ms |
total: | 516ms |
0 / 0 |