Главная страница
    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.46 MB
Время: 0.038 c
2-1130874663
Pasha L
2005-11-01 22:51
2005.11.20
Как два консольных приложения разделить по разным окнам


3-1128661433
syte_ser78
2005-10-07 09:03
2005.11.20
Перевод БД на другой язык


2-1130849562
BFG9k
2005-11-01 15:52
2005.11.20
Закрытие программы в OnCreate


14-1130246873
oldman
2005-10-25 17:27
2005.11.20
Мошенничество на государственном уровне?


2-1130920589
Ale-x
2005-11-02 11:36
2005.11.20
Автозапуск





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский