Конференция "Сети" » InternetReadFile + BlockWrite + ProgressBar , помогите ... [D7, WinXP]
 
  • IgorT © (18.02.08 23:21) [0]
    Вобщем, есть такая функция для скачивания файлов из инета, но никак не могу дойти как прикрепить к ней прогресс бар ?(прикрепить то я прикреплю, надо чтобы он коректно работал, ато у меня не получается - разов по 20 проходит :) , неправильный код об прогресе я не вставлял... )

    Вот код самой процедуры :


    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
      Application.ProcessMessages;
       if u=true then
         begin
         CloseFile(f);
         DeleteFile('new.ini');
         DeleteFile('new.rar');
         Clipboard.Clear;
         Result:=False;
         exit;
         end;

       InternetReadFile(hURL, @Buffer,
                        SizeOf(Buffer), BufferLen);
      BlockWrite(f, Buffer, BufferLen);
      until BufferLen = 0;
      CloseFile(f);
      Clipboard.Clear;
      Result:=True;
     finally
      InternetCloseHandle(hURL)
     end
    finally
     InternetCloseHandle(hSession)
    end
    end;


  • Compiler © (19.02.08 00:18) [1]
    Перед скачиванием нужно наверно размер файла узнать.

    dwBufferLen, dwIndex: DWORD;
    dwBuffer: Pointer;
    ...
    dwIndex  := 0;
    dwBufferLen := 20;
    HttpQueryInfo(URL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex)



    Размер файла должен быть тут dwBuffer
  • IgorT © (19.02.08 01:11) [2]
    етым кодом мы узнаем только вес самого файла на сервере ? Или мы должны подавать на него уже вытащеный размер ? Я с прогресс барамы никогда не работал, обясните пожалуйста все по простому, растолкуйте плз
  • Сергей М. © (19.02.08 09:52) [3]
  • IgorT © (20.02.08 21:15) [4]
    Вопрос решен, решения здесь - http://forum.sources.ru/index.php?act=ST&f=14&t=223785
 
Конференция "Сети" » InternetReadFile + BlockWrite + ProgressBar , помогите ... [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]