|
|
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
Вопрос - как отображать TProgressBar`ом ход загрузки файлов (реальный ход, а не абстрактную анимацию) через TIdHTTP, ход отсылки файлов по почте, т.е. письма с вложеними с помощью TIdSMTP и ход получения почтового сообщения с вложениями (файлами) с помощью TIdPOP3 Иинтересует и отображание хода загрузки/отсылки конкретного файла, и общий ход загрузки и принятия файлов для всех трех случаев - TIdHTTP, TIdPOP3 и TIdSMTP Borland® C++Builder® for Microsoft® Windows™ Version 10.0 Update 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2007, 13:00:22 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
Для TIdSMTP, TIdPOP3 попробуйте покрутить OnWorkBegin , OnWork , OnWorkEnd (Indy 8.0.25). У Вас, судя по -=VSergeyV=- Borland® C++Builder® for Microsoft® Windows™ Version 10.0 Update 2 аналогичное, или, мо (у мну Update 4), еще ниже... Я когда-то пытался, посредством выше предложенных event'ов, прикрутить градусник к TIdPOP3, но получалось, по крайней мере у меня, что промежуточные сосотояния пролетали мимо кассы: т.е. 0% и сразу 100%. Попробуйте поискать еще сдесь ... Можете еще попробовать поднять Indy... Бо 9-ка от 8-ки отличаецо, а уж про 10-ку... Мо там они это дело уже очеловечили... А по поводу TIdHTTP - это даже в browser'ах не реализовано ;) _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2007, 11:22:08 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
On Sat, 15 Dec 2007 11:22:08 +0300, Ex_Soft <nospam@sql.ru> wrote: > А по поводу TIdHTTP - это даже в browser'ах не реализовано ;) Когда веб-сервер отдает заголовок Content-Length, браузеры отрабатывают отображение прогресса. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2007, 20:27:25 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
Leshij Когда веб-сервер отдает заголовок Content-Length, браузеры отрабатывают отображение прогресса Вы в этом уверены? Согласен: Content-Length присутствует. Но вот обрабатывается ли? В случае с простыми страницами - тут, как говориться, "...не вижу повода не выпить..." Но такие страницы сейчас уже практически не встречаются. А вот когда грузится "взрослая" страница с фреймами, js'ами, css'ками, рисунками, флешками и прочими "...пристанями, параходами..." определить истинный вес страницы довольно-таки довольно геморно... По сему в браузерах (которыми я пользуюсь: M$ IE/Mozilla/Mozilla Firefox) градусник показывает среднепотолочное значение, которое генерицо по какому-нить алгоритму, вне зависимости от соотношения кол-во принятых данных/общее количество. Особенно это заметно при загрузке монстроидальных страниц на плохом канале (dial-up). Градусник уже показывает 99.99%, а, фактически, не загружено, 4 example, и четверть страницы... И он, бедненький, эти оставшиеся 0.01% "вращает" до посинения... Возвращаясь к TIdHTTP . Во-первых: я, лично, сомневаюсь, что до полной отработки GET'а, можно достучаться к содержимому, распарсить его, и получить Content-Length. Конечно, можно, запросить в начале header. А потом, вычислив Content-Length, запросить всю страницу. Только в этом случае, сами понимаете, заголовок считается дважды. Причем сам размер заголовка тоже нужно будет учитывать. Во-вторых: основываясь на опыте прикручивания градусника к TIdPOP3, сомневаюсь, что даже эти телодвижения приведут к желаемому (не думаю, что сие у TIdPOP3 и TIdHTTP реализовано по разному): все сведется к 0% и, сразу же, 100%. Конечно, мои догадки нуна, так сказать, проверить на практике. Но мне, если честно, лень, да и времени - ниц... По сему - пусть топикстартер не поленицо, проверит все на дрозофиле и, если посчитает нужным, оглаcит результаты проведенных исследований /me думает: эва мну и тыркнуло-то... _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 10:21:54 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
Возникла проблема с OnWorkBegin(System::TObject* ASender, Idcomponent::TWorkMode AWorkMode, int AWorkCountMax) для TIdSMTP и TIdPOP3 - AWorkCountMax всегда равен 0, как для AWorkMode=wmRead, так и AWorkMode=wmWrite Использую Indy 9, поиск неутишительно говорит что такая проблема (AWorkCountMax==0) достаточно частая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 12:26:44 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
On Tue, 18 Dec 2007 10:21:54 +0300, Ex_Soft <nospam@sql.ru> wrote: > Вы в этом уверены? Согласен: Content-Length присутствует. Но вот > обрабатывается > ли? В случае с простыми страницами - тут, как говориться, "...не вижу > повода не > выпить..." Но такие страницы сейчас уже практически не встречаются. А > вот когда > грузится "взрослая" страница с фреймами, js'ами, css'ками, рисунками, > флешками и > прочими "...пристанями, параходами..." определить истинный вес страницы > довольно-таки > довольно геморно... По сему в браузерах (которыми я пользуюсь: M$ > IE/Mozilla/Mozilla > Firefox) градусник показывает среднепотолочное значение, которое > генерицо по > какому-нить алгоритму, вне зависимости от соотношения кол-во принятых > данных/общее > количество. К примеру, Опера сначала пишет Document: xx%, потом Images xx/xx, потом Elements xx/xx. Если страница не frame-based, загрузка основного документа показывается честно. Если страница на фреймах -- да, согласен. > Возвращаясь к TIdHTTP. > Во-первых: я, лично, сомневаюсь, что до полной отработки GET'а, можно > достучаться к содержимому, распарсить его, и получить Content-Length. Не знаю, как сделано в TIdHTTP, но как только клиент принимает символы \r\n\r\n -- все, хэдеры кончились, можно их парсить, дальше загружается тело http ответа. > Конечно, > можно, запросить в начале header. А потом, вычислив Content-Length, > запросить > всю страницу. Да, в крайнем случае так. > Причем сам размер заголовка тоже нужно будет учитывать. Если имелось в виде прибавлять размер заголовка к размеру файла при подсчете, что есть 100%, можно и не учитывать, если файлы не совсем нулевого размера -- визуальной разницы не будет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2007, 20:27:47 |
|
||
|
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
|
|||
|---|---|---|---|
|
#18+
Решение проблемы - оценяющий общий объем передаваемой информации у меня следующий - при отправки письма с вложениями, через IdSMTP - сохранение объекта сообщения в поток Код: plaintext и использование размера Код: plaintext - при получении писем с вложениями, через IdPOP3 делаю цикл Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. - при получении файлов с сервера из указанной директории, через IdSMTP, также делаю цикл и в нем Код: plaintext 1. Также могу сделать прогресс бар для каждого загружаемого/получаемого файла - при загрузки файлов, при отсылке почты (хоть и понятно что тут отсылается цельное почтовое сообщени), но как можно получить размеры вложений входящей почты до загрузки сообщения? Ксати речь изначальна шла о загрузки файлов - а не веб-страниц, поэтому как топикотолкателю оглашать то мне нечего будет( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2007, 11:37:02 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=262&tid=2027586]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 422ms |

| 0 / 0 |
