Главная страница
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.033 c
1-1083233147
ЁПРСТ
2004-04-29 14:05
2004.05.16
Ответ на запрос системы.


3-1082111002
Layner
2004-04-16 14:23
2004.05.16
Научите работать с XML как с SQL? Если такое возможно?


4-1077013392
KosilkA
2004-02-17 13:23
2004.05.16
иконку из ехе в файл


1-1083526544
RIMMER
2004-05-02 23:35
2004.05.16
Отрисовка 32-битных иконок ценой нарушения отрисовки контрола


3-1082533864
mich
2004-04-21 11:51
2004.05.16
Метод Synchronize