Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

как скачать файл с интернета   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
4-1079977295
Iks
2004-03-22 20:41
2004.05.16
Я научился создовать окна на WinAPI,


4-1080636512
Jul
2004-03-30 12:48
2004.05.16
Хороший help file или справочник по Win Api


1-1083261874
Nous Mellon
2004-04-29 22:04
2004.05.16
Нестандартный ЛистВью


3-1082345098
Orange
2004-04-19 07:24
2004.05.16
Сохранение базы данных


3-1082163141
juiceman
2004-04-17 04:52
2004.05.16
Microsoft SQL Server &amp; Oracle