[Delphi] Problemy ze ściąganiem

0

Cześć, mam mały problem, poniżej zamieszczam kod do ściągania z postępem, ale ma gdzieś błąd i nie wiem gdzie, po ściągnięciu jednego pliku, następny jest ściągany nie całkiem. Sprawdziłem to na zdjęciach, pierwsze ściąga się normalnie, a kolejne różnie od pół do 1/4. Byłbym wdzięczny z pomoc. Thx

 
const
  addedNo = 1024;
var
  h,
  f :       pointer;
  r :       cardinal;
  buf :     array[0..(addedNo-1)]of char;
  size_ :   dword;
  plik :    file;
  dwBufLen,
  dwIndex:  DWORD;
  buff :    pointer;
  fil_,
  url_ :    string;
  j :       integer;
begin
  //pseudo-czyszczenie zmiennych
  buf:='';
  for j:=low(buf) to high(buf) do buf[j]:=#0;
  r:=0;
  //end w/w

  fil_ := 'C:\pkgirl.wmv';
  url_ := 'http://djprog.ovh.org/liv.wmv';

  AssignFile(plik, fil_);
  Rewrite(plik, 1);

  h:=InternetOpen(nil,INTERNET_OPEN_TYPE_DIRECT,nil,nil,0);
  f:=InternetOpenUrl(h,PAnsiChar(url_),nil,0,0,0);

  dwBufLen := 1024;
  dwIndex := 0;
  GetMem(Buff, dwBufLen);
  HttpQueryInfo(f, HTTP_QUERY_CONTENT_LENGTH, buff, dwBufLen, dwIndex);
  size_ := StrToInt(StrPas(Buff));
  FreeMem(Buff, dwBufLen);

  Gauge1.MaxValue := size_;
  repeat
    InternetReadFile(f,@buf,addedNo,r);
    BlockWrite(plik, buf, sizeof(buf));
    Gauge1.Progress:=Gauge1.Progress+addedNo;
    Application.ProcessMessages;
  until Gauge1.Progress=Gauge1.MaxValue;
  Seek(plik, size_);
  Truncate(plik);
  CloseFile(plik);

  InternetCloseHandle(f);
  InternetCloseHandle(h);
end;
0
InternetReadFile(f,@buf,addedNo,r);
BlockWrite(plik, buf, sizeof(buf));

Nie zapisuj sizeof(buf), tylko r, czyli tyle ile odczytałeś.

0

Niestety to nic nie dało.

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