Kontynuowanie pobierania pliku

0

Witam :). Mam taki problem z którym walczę ale nie mogę sobie poradzić może ktoś pomoże, mianowicie mam taki kod:

try
   AssignFile(F, edit2.Text);
   try
    TotalRead := 0; //  inicjowanie zerem.
    Rewrite(F, 1);
    repeat
     if Broken then Break;
     { pobieranie kolejnych fragmentów pliku }
      InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead);
      BlockWrite(F, Buffer, 1024); // zapisanie buforu w pliku
      TotalRead := TotalRead + dwRead;

       Application.ProcessMessages;
       { wyświetlenie postępu }
       Label1.Caption := 'Ściągam ' + IntToStr(TotalRead div 1024) + ' kB z ' + IntToStr(dwSize div 1024) + ' kB';
       ProgressBar1.Position := TotalRead div 1024;
     until dwRead = 0;
     finally
        CloseFile(F);
     end;
    finally
    InternetCloseHandle(hSession);
    end;
   finally
    InternetCloseHandle(hURL);
   end;

Ładnie wszystko śmiga. Ale chciałbym zrobić tak że jak mi się internet rozłączy w trakcie pobierania pliku, to żebym nie musiał go od nowa pobierać, tylko kontynuować pobieranie.
Może ktoś już się z tym kiedyś uporał, albo ma jakiś pomysł :).

Pozdrawiam :)

0

Ten fragment kodu nie ma nic wspólnego z wznowieniem pobierania prawdopodobnie masz tam gdzieś funkcję InternetOpenUrl i jednym z jej parametrów są nagłówki tam trzeba ustawić nagłówek Range i bajty które chcesz pobrać ale dostępny on jest w HTTP 1.1 i nie każdy serwer obsługuje.

0

Dzięki za szybką odpowiedź :). Metoda z nagłówkiem działa :).

0

Problem pozostaje jak połączyć 2 pliki w jeden.

Najwydajniej będzie za pomocą TFileStream (chyba wbudowanej funkcji temu służącej tam nie ma, lecz wystarczy wczytać oba pliki do pamięci, zaalokować trzeci bufor o odpowiednim rozmiarze oraz przekopiować do niego dane za pomocą funkcji operujących w pamięci).

1 użytkowników online, w tym zalogowanych: 0, gości: 1