powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
7 сообщений из 7, страница 1 из 1
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35010279
-=VSergeyV=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос - как отображать TProgressBar`ом ход загрузки файлов (реальный ход, а не абстрактную анимацию) через TIdHTTP, ход отсылки файлов по почте, т.е. письма с вложеними с помощью TIdSMTP и ход получения почтового сообщения с вложениями (файлами) с помощью TIdPOP3

Иинтересует и отображание хода загрузки/отсылки конкретного файла, и общий ход загрузки и принятия файлов для всех трех случаев - TIdHTTP, TIdPOP3 и TIdSMTP

Borland® C++Builder® for Microsoft® Windows™ Version 10.0 Update 2
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35012092
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 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
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35015982
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35016710
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35017226
-=VSergeyV=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла проблема с OnWorkBegin(System::TObject* ASender, Idcomponent::TWorkMode AWorkMode, int AWorkCountMax) для TIdSMTP и TIdPOP3 - AWorkCountMax всегда равен 0, как для AWorkMode=wmRead, так и AWorkMode=wmWrite
Использую Indy 9, поиск неутишительно говорит что такая проблема (AWorkCountMax==0) достаточно частая
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35018890
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
    #35025711
-=VSergeyV=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение проблемы - оценяющий общий объем передаваемой информации у меня следующий
- при отправки письма с вложениями, через IdSMTP - сохранение объекта сообщения в поток
Код: plaintext
oIdMessage->SaveToStream(TmpStream);

и использование размера
Код: plaintext
TmpStream->Size

- при получении писем с вложениями, через IdPOP3 делаю цикл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TmpStream->Size= 0 ;
int cnt_mail=oIdPOP3->CheckMessages();
for (int i= 0 ; i < cnt_mail; i++) {
try{
size_in_mail+=oIdPOP3->RetrieveMsgSize(i+ 1 );
}
catch(...){

}}

- при получении файлов с сервера из указанной директории, через IdSMTP, также делаю цикл и в нем
Код: plaintext
1.
http->Head(url);
size_files_upload+=http->Response->ContentLength;

Также могу сделать прогресс бар для каждого загружаемого/получаемого файла - при загрузки файлов, при отсылке почты (хоть и понятно что тут отсылается цельное почтовое сообщени), но как можно получить размеры вложений входящей почты до загрузки сообщения?

Ксати речь изначальна шла о загрузки файлов - а не веб-страниц, поэтому как топикотолкателю оглашать то мне нечего будет(
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отображения хода загрузки файлов и писем, TIdHTTP, TIdPOP3, TIdSMTP, TProgressBar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]