Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скачать файл из интернета по HTTP? [D7, Win2k]


Alaman ©   (2004-08-23 23:17:00) 

Как скачать файл из интернета по HTTP?

Как скачать файл из интернета по HTTP?

Нашел в интернете два способа:

Первый способ:
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;

Эта функция возвращает true даже в том случае если связь прервалась посреди закачки.
Как мне узнать весь файл закачался или не весь?

Второй способ:

uses
 ...URLMon;

...
if UrlDownloadToFile(nil, PChar(DTfileURL), PChar(DTFileName), 0, nil)= 0
   then
     Memo1.lines.append('загрузка завершилась успешно')
   else
     Memo1.lines.append('Ошибка загрузки');
Этот метод кажется проще и возвращает false если файл не докачался.
Однако первый способ я встретил в десятке статей, тогда как второй только
в одной и то наряду с первым. Может у второго способа есть какие то подводные камни?
Каким же способом воспользоваться? и есть ли еше способы?


Woolen   (2004-08-30 15:49:00) [1]

Есть и еще. Не знаю, через что он работает, но в Delphi есть стандартный Action для подобных вещей: TDownloadURL. Проверь через что он работает, может будет тебе полезен.


Kostik   (2004-08-25 22:14:00) [2]

Блин даже не знаю чем помочь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо