Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Контроль копирование файла с сайта на диск.   Найти похожие ветки 

 
kyn66 ©   (2005-11-02 16:51) [0]

Уважаемые Мастера! Хочу подвесить ProgressBar для копирования файла с сайта, а он чегость дергается как ненормальный. Вот мой код, в чем там ошибка?

 hSession := InternetOpen("Proga", PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);
 hURL := InternetOpenURL(hSession,PChar(UrlName),nil, 0, 0, 0);
 InternetQueryDataAvailable(hURL, SumSize, 0, 0);
 PB1.Min := 0;
 PB1.Max := SumSize;
 Repeat
   InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
   InternetQueryDataAvailable(hURL, SumSize, 0, 0);
   PB1.Position := PB1.Max - SumSize;
   BlockWrite(f, Buffer, BufferLen);
   Application. Processmessages;
 until
  (BufferLen = 0) or


 
DiamondShark ©   (2005-11-02 17:14) [1]

А почитать, что возвращает функция InternetQueryDataAvailable?

This function returns the number of bytes of data that are available to be read immediately by a subsequent call to InternetReadFile.

Эта функция возвращает количество байт данных, которые доступны для немедленного считывания последующим вызовом InternetReadFile.

Вот этот кусок

>  InternetQueryDataAvailable(hURL, SumSize, 0, 0);
>  PB1.Min := 0;
>  PB1.Max := SumSize;

это ни разу не размер файла.

вот этот кусок

>    InternetQueryDataAvailable(hURL, SumSize, 0, 0);
>    PB1.Position := PB1.Max - SumSize;

это ни разу не загруженное количество байт.


 
kyn66 ©   (2005-11-02 17:20) [2]

Спасибо за легбез, но а как должно быть правильно? Примерец мона? Именно для скачивания из Интернета.


 
DiamondShark ©   (2005-11-02 17:39) [3]


> Именно для скачивания из Интернета.

Какой протокол?

Для HTTP размер файла содержится в http-заголовке Content-Length
Значение этого заголовка можно получить функцией HttpQueryInfo с параметром HTTP_QUERY_CONTENT_LENGTH.

Правда, http-сервер не обязан возвращать этот заголовок ;)

Для FTP размер файла определяется функцией FtpGetFileSize.

В вызове
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
действительное количество прочитанных этим вызовом байт возвращается в переменной BufferLen.


 
DiamondShark ©   (2005-11-02 17:42) [4]


> за легбез

ликбез.
ЛИКвидация БЕЗграмотности.


 
kyn66 ©   (2005-11-02 17:46) [5]

Значит как это прикрутить, можно конкретнее? Протокол HTTP



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.054 c
2-1131090450
dreamse
2005-11-04 10:47
2005.11.20
Как определить есть ли у программы доступ в каталог ?


2-1131047306
Eksell
2005-11-03 22:48
2005.11.20
Kak v Console ochisteti ekran?


3-1128584311
Andrushk
2005-10-06 11:38
2005.11.20
TSQLStoredProc и схема


14-1130225160
Pazitron_Brain
2005-10-25 11:26
2005.11.20
Как это сделать?


14-1130250617
Hamertime
2005-10-25 18:30
2005.11.20
Пррверьте пожалуйста есть ли ошибки