Главная страница
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.47 MB
Время: 0.029 c
1-1083235519
Vlad Oshin
2004-04-29 14:45
2004.05.16
Chartfx. Как построить _любой_ график


14-1082552866
Сергей Волкович
2004-04-21 17:07
2004.05.16
Ищем сотрудников


8-1077368857
able
2004-02-21 16:07
2004.05.16
сравнение картинок


3-1082376634
}|{yk
2004-04-19 16:10
2004.05.16
Cannot transliterate


4-1079608010
andri
2004-03-18 14:06
2004.05.16
Как запустить файл от имени другого пользователя (NT)