Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.032 c
14-1130482664
Изобретатель
2005-10-28 10:57
2005.11.20
Подсчет контрольной суммы файлов. Новая функция!


2-1130493477
Perf2k2
2005-10-28 13:57
2005.11.20
Всем привет. Проблемы со связкой DBComboBox и DataSource и вообще


1-1130431403
Криворукий
2005-10-27 20:43
2005.11.20
освобождаелся ли память ...


4-1127117079
NightLord
2005-09-19 12:04
2005.11.20
PopupManu на WinApi


11-1104391392
Lars
2004-12-30 10:23
2005.11.20
Pstream.Save2File




   Наверх