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;