Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.038 c
14-1082641309
Digitman
2004-04-22 17:41
2004.05.16
Конструктивный же диалог ? Или - нет ? в тему LMD ... или НЕ LMD


3-1082336686
rosl
2004-04-19 05:04
2004.05.16
запрос


7-1081362670
_newver_
2004-04-07 22:31
2004.05.16
как програмно узнать какие программы запущены ....


11-1069910457
Igit
2003-11-27 08:20
2004.05.16
Не работает код


4-1080678131
i-s-v
2004-03-31 00:22
2004.05.16
Сообщения PopupMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский