Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Внизкак скачать файл с интернета Найти похожие ветки
← →
iudjen © (2004-03-28 16:12) [0]как скачать файл с интернета и как сделать так чтоб он закачивал в определенную папку.
← →
iudjen © (2004-03-28 16:13) [1]я скачал какой-то исходник но там компонент какойто нужен
← →
Sergey Masloff (2004-03-28 16:42) [2]На сайте http://www.podgoretsky.com есть замечательный документ по работе с WinInet API где есть и ответ на твой вопрос. Советую ознакомиться.
Ищи в разделе /inet.html
прямую ссылку специально не даю - там много интересного, посмотри.
← →
vuk © (2004-03-28 22:21) [3]Код может быть немного не доведен до ума, но если не заморачиваться с аутентификацией на прокси, то примерно так:
function ErrorMessageFromWinINet(ErrorCode: Integer): string;
var
Len: Integer;
Buffer: array[0..255] of Char;
Module: HModule;
begin
Module := GetModuleHandle("wininet.dll");
Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE or
FORMAT_MESSAGE_ARGUMENT_ARRAY, pointer(Module), ErrorCode, 0, Buffer,
SizeOf(Buffer), nil);
while (Len > 0) and (Buffer[Len - 1] in [ #0..#32, "."]) do Dec(Len);
SetString(Result, Buffer, Len);
end;
function GetLastInetError: string;
var
Buff: string;
SysError, Error, Bytes : cardinal;
begin
SysError := GetLastError;
Result := ErrorMessageFromWinINet(SysError);
if Result = "" then
Result := "Не удалось получить информацию об ошибке";
end;
function GetInetFile(const fileURL, FileName: String;
var ErrorInfo: string): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BytesRead: DWORD;
sAppName: string;
Stream: TFileStream;
AccessType: integer;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
AccessType := INTERNET_OPEN_TYPE_PRECONFIG;
hSession := InternetOpen(PChar(sAppName), AccessType, nil, nil, 0);
if hSession <> nil then
begin
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
if hURL <> nil then
begin
try
Stream := TFileStream.Create(FileName, fmCreate);
try
repeat
Result := InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BytesRead);
if Result then
Stream.Write(Buffer, BytesRead)
else
ErrorInfo := GetLastInetError;
until (not Result) or (BytesRead = 0);
finally
Stream.Free;
end;
finally
InternetCloseHandle(hURL);
end;
end else
ErrorInfo := GetLastInetError;
finally
InternetCloseHandle(hSession);
end;
end else
ErrorInfo := GetLastInetError;
end;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c