Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.042 c
3-1128886287
ZMaximI
2005-10-09 23:31
2005.11.20
Генераторы


11-1112012463
BigMic
2005-03-28 16:21
2005.11.20
Установка в системе шрифта по-умолчанию


3-1121670907
АМБ
2005-07-18 11:15
2005.11.20
Просмотр и восстановление "удаленных" записей в DBF таблицах


2-1130511655
Yura32
2005-10-28 19:00
2005.11.20
IP


14-1130342484
Копир
2005-10-26 20:01
2005.11.20
Мышка-mouse рознь :-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский