Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11631
Последний выпуск: 19.06.2015

Качаем файл из Internet

Если ваша программа содержит подключаемые модули (BPL или DLL) или есть необходимость обновлять саму программу, то наверняка стояла проблема обновления копий программы. С развитием Internet появилась прекрасная возможность сделать это быстро и красиво. В данной статье мы расскажем, как добавить опцию автообновления программ из Internet.

Delphi дает нам полный доступ к API WinInet (wininet.pas), что позволяет подключиться и скачать любой файл с указанного вебсайта, используя протоколы FTP или HTTP. Например, мы можем использовать функции API WinInet для создания FTP-браузера или программы для поиска на публичных FTP-серверах заданных файлов.

Основная функция нашей программы - GetInetFile:

uses Wininet; 

function GetInetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
   Result:=False;
   sAppName := ExtractFileName(Application.ExeName);
   hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG,
         nil, nil, 0);
   try
      hURL := InternetOpenURL(hSession,
      PChar(fileURL),nil,0,0,0);
      try
         AssignFile(f, FileName);
         Rewrite(f,1);
         repeat
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
            BlockWrite(f, Buffer, BufferLen)
         until BufferLen = 0;
         CloseFile(f);
         Result:=True;
      finally
      InternetCloseHandle(hURL)
      end
   finally
   InternetCloseHandle(hSession)
   end
end;  

Замечание: конечно, этот пример нужно расширить, вставив, например, код для отображения прогресса скачивания в цикл.

Использовать функцию GetInetFile очень просто:

var FileOnNet, LocalFileName: string
begin
   FileOnNet:='http://www.codenet.ru/progr/delphi/';
   LocalFileName:='MyFile.zip'; 

   if GetInetFile(FileOnNet,LocalFileName)=True then
      ShowMessage('Download successful')
   else
      ShowMessage('Error in file download') 

end; 

Этот кусок кода скачивает файл с именем mp3player.zip, находящийся по адресу 'http://www.codenet.ru/progr/delphi/' и записывает его в текущий каталог под именем 'MyFile.zip'. Все очень просто.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
214
03 февраля 2003 года
wanja
1.2K / / 03.02.2003
Мне нравитсяМне не нравится
4 февраля 2010, 10:12:27
А как качать, если прокси требует авторизации?
2.
Аноним
Мне нравитсяМне не нравится
23 октября 2004, 09:24:54
2Sync, используй Thread...
3.
Аноним
Мне нравитсяМне не нравится
14 сентября 2004, 21:56:56
а как можно проверить
сколько скачалось
если можите подскажите как отобразить
процесс скачивания
спасибо
4.
Аноним
Мне нравитсяМне не нравится
24 августа 2004, 17:43:37
мда, участок кода =true лишний...
5.
Аноним
Мне нравитсяМне не нравится
5 августа 2004, 09:48:16
GetInetFile(FileOnNet,LocalFileName)=True - не логичный кусок кода, зачем выполнять сравнение, если функция и так возвращает boolean
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог