Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 00:42   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
Вопрос Добавить ProgressBar в ф-ию скачивания

Код:
procedure TForm1.Button4Click(Sender: TObject);
var
  F: File;
  ResumePos, BufferLen, SumSize: DWORD;
  hSession, hURL: HInternet;
  Buffer: array[1..1024] of Byte;
  err: boolean;
begin
 SumSize := 0; ResumePos := 0;  //Инициализируемся
 AssignFile(F, Edit6.Text); //Свяжемся с файлом
 IF FileExists(Edit6.Text) then //Есть ли на диске этот файл
   begin
     Reset(f,1); //Ax, есть? Откроем!
     ResumePos := FileSize(F); //Откуда докачать
     Seek(F, FileSize(F)); //А писать будем в конец
   end else ReWrite(f,1); //А раз нет, так создадим
   NADO := TRUE; //Надо качать...
   //Открыли сессию
   hSession := InternetOpen('X-Kachalka', PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);
   //И наш УРЛ
   hURL := InternetOpenURL(hSession,PChar(Edit5.Text),nil, 0, 0, 0);
   //Сколько там наш файл весит?
   InternetQueryDataAvailable(hURL, SumSize, 0, 0);
   label2.Caption := IntToStr(SumSize); //Сообщим об этом
   if ResumePos>0 then //Если докачиваем,
     begin
          InternetSetFilePointer(hURL,ResumePos,nil,0,0); //То сместимся
     end;
   REPEAT //Качаем
     err:= InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); //Читаем буфер
     IF err= false then //Ошибка чтения
       begin
         ShowMessage ('Произошел облом :('); //Сообщим и выходим
         exit;
       end;
     BlockWrite(f, Buffer, BufferLen); //Пишем в файл
     Application. Processmessages;
   UNTIL (BufferLen = 0) Or (NADO= FALSE); //Качаем, пока не все или надо
 ShowMessage ('Успешно загружено!');
end;
Функция скачивания файла из интернета.
Сюда необходимо вставить ProgressBar, который будет показывать, сколько уже скачано.

Насколько я понял, вставлять его нужно где-то здесь:
Код:
BlockWrite(f, Buffer, BufferLen); //Пишем в файл
Но как? Т.е. каким образом управлять параметром Position?
PS. Размер файла тоже неправильно показывается .

источник функции: http://www.delphisources.ru/pages/fa..._download.html
fezilk25 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь ProgressBar и скачивания с FTP RUSlan48 Работа с сетью в Delphi 20 14.01.2016 18:34
ProgressBar для скачивания KoBRaAndrey Работа с сетью в Delphi 5 04.04.2011 23:52
ProgressBar, скачивания файла по url serres Общие вопросы .NET 16 13.11.2010 06:16
Скачивания файла designer999 Работа с сетью в Delphi 15 22.02.2010 22:21
Защита от скачивания armref Безопасность, Шифрование 2 27.09.2009 14:03