Конференция "Сети" » Загрузка удаленного файла
 
  • GamerZone (11.10.07 16:42) [0]
    Для загрузки файла с http использую функцию:
    /////////////////////////////////////////////////////////////////////////
    function GetInetFile (const fileURL, FileName: String): boolean;
    const BufferSize = 1024;
    var
     hSession, hURL: HInternet;
     Buffer: array[1..BufferSize] of Byte;
     BufferLen: DWORD;
     f: File;
     sAppName: string;
    begin
     Result:=False;
     sAppName := ExtractFileName(Application.ExeName);
     hSession := InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
     try
       hURL := InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0);
       try
         AssignFile(f, FileName);
         Rewrite(f,1);
         repeat
           InternetReadFile(hURL, @Buffer,SizeOf(Buffer), BufferLen);
           BlockWrite(f, Buffer, BufferLen);
         until BufferLen = 0;
         CloseFile(f);
         Result:=True;
       finally
         InternetCloseHandle(hURL);
       end;
     finally
       InternetCloseHandle(hSession);
     end;
    end;
    /////////////////////////////////////////////////////////////////////////

    Но у нее есть недостаток:
    если файла нет, функция все равно возвращает True, т.к. сервер при отсутствии выдает сообщение об ошибке.

    Подскажите, как от этого избавиться.
  • Сергей М. © (12.10.07 08:59) [1]

    > как от этого избавиться


    Для начала осознать, что

    1.  InternetReadFile и InternetReadFile - это функции.
    2. Вызовы WinAPI-функций при корректных передаваемых им параметрах не приводят в исключительным ситуациям.
 
Конференция "Сети" » Загрузка удаленного файла
Есть новые Нет новых   [134464   +62][b:0][p:0]