Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизКонтроль копирование файла с сайта на диск. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.083 c