Форум: "Сети";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
ВнизСкачать файл с интернета Найти похожие ветки
← →
Spose © (2006-01-28 08:19) [0]Необходимо любым доступным образом (только не в ручную) скачать файл с интернета по указанной ссылке.
← →
Yegorchic © (2006-01-28 12:00) [1]uses wininet;
...
function DownloadFile(const Url: string): string;
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Buffer: array[0..1024] of char;
BytesRead: cardinal;
begin
Result := "";
NetHandle := InternetOpen("Delphi 5.x", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(NetHandle) then
begin
UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
{ UrlHandle правильный? Начинаем загрузку }
begin
FillChar(Buffer, SizeOf(Buffer), 0);
repeat
Result := Result + Buffer;
FillChar(Buffer, SizeOf(Buffer), 0);
InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end
else
begin
{ UrlHandle неправильный. Генерируем исключительную ситуацию. }
raise Exception.CreateFmt("Cannot open URL %s", [Url]);
end;
InternetCloseHandle(NetHandle);
end
else
{ NetHandle недопустимый. Генерируем исключительную ситуацию }
raise Exception.Create("Unable to initialize Wininet");
end;
Вот. Только на время закачки, программе как бы "повиснет".
← →
VirEx © (2006-01-28 13:38) [2]
> Вот. Только на время закачки, программе как бы "повиснет".
поэтому эту функцию надо запускать в отдельном потоке
← →
VirEx © (2006-01-28 13:41) [3]или в конструкцию
repeat
...
until BytesRead = 0;
воткнуть application.processmessages
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c