Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Ф-ия Закачки файлов с докачкой   Найти похожие ветки 

 
DelphiN! ©   (2004-06-28 17:29) [0]

Нашел в сети ф-ию закачки файлов с докачкой, однако она работает,  то не работает! Я в недоумении! Кочает через раз, а когда не кочает, то возвращает размер файла на сервере=0, при этом в этих случаях в интернет моя программа даже не проситься, в чем может быть дело? Привожу полный код ф-ии:

If SaveDialog1.Execute then
LocalPath := SaveDialog1.FileName;
label2.caption := "Local path: "+LocalPath;
if LocalPath="" then
exit;

 RestartPos := 0; //<- |?????????????
 fSize := 0; //<- |??????????
 Button1.Enabled := false;
 Button2.Enabled := true;
 //???? ?? ????? ???? ???? ?? ???????, ??? ????? ??????????
 if FileExists(LocalPath) then
 begin
   AssignFile(f, LocalPath);
   Reset(f, 1);
   RestartPos := FileSize(F);
   Seek(F, FileSize(F));
 end
 else
 begin
   //????? ? ??????
   AssignFile(f, LocalPath);
   ReWrite(f, 1);
 end;
 //????????? ??????
 hInet := InternetOpen(Pchar(Application.EXENAME),
   PRE_CONFIG_INTERNET_ACCESS,
   nil,
   nil,
   0);

 //????? ?????????????? ?????? ??? ?????????
 Header := "Accept: */*";
 //????????? URL
 hURL := InternetOpenURL(hInet,
   PChar(Edit1.Text),
   pchar(Header),
   StrLen(pchar(Header)),
   0,
   0);
 //????????????? ??????? ? ????? ??? ???????
 if RestartPos > 0 then
   InternetSetFilePointer(hURL,
     RestartPos,
     nil,
     0,
     0);
 //??????? ??-?? ???? ???????
 InternetQueryDataAvailable(hURL, fSize, 0, 0);
 if RestartPos > 0 then
 begin
   ProgressBar1.Min := 0;
   ProgressBar1.Max := fSize + RestartPos;
   ProgressBar1.Position := RestartPos;
 end
 else
 begin
   ProgressBar1.Min := 0;
   ProgressBar1.Max := fSize + RestartPos;
 end;

 if fsize = 0 then begin
 MessageDlg("Error file size is null!",mterror,[mbok],0);
 exit;
 end;
 //?????? ?? ??? ??? ???? ??????? ?????????? ????? ???? ??
 //????? ????? ???? ??? ?? ????
 while (ReadLen <> 0) and (stop = false) do
 begin
   //?????? ? ?????
   InternetReadFile(hURL, @fBuf, SizeOf(fBuf), ReadLen);
   //??????? ??-?? ???????? ????????
   InternetQueryDataAvailable(hURL, fSize, 0, 0);
   ProgressBar1.Position := ProgressBar1.Position+ReadLen;
   BlockWrite(f, fBuf, ReadLen); //<-????? ? ????
   Application.ProcessMessages;
 end;
 stop := false;
 Button1.Enabled := true;
 Button2.Enabled := false;
 InternetCloseHandle(hURL); //<-|?????????
 InternetCloseHandle(hInet); //<-|???c??
 CloseFile(f); //<-|? ????



В чем дело? И еще до меня совершенно не доходит, почему progressbar не пашет, в progressbar1.max = fsize, а fsize почемуто = ерунде...

Заранее благодарен за помощь


 
Piter ©   (2004-06-29 23:53) [1]

Не знаю как другие участники форума - а мне совершенно лень разбираться в чьем-то чужом коде... переформулируй вопрос - что тебе надо? Искать ошибку в коде за тебя никто не будет...

Что касается лично меня - если бы надо было реализовать докачку - я бы делал ручками... то есть почитал там описание протокола HTTP и FTP (как задавать начало скачки) и использовал стандартный TTCPClient или там TClientSocket...


 
Palladin ©   (2004-06-30 00:52) [2]

Между прочим, сервер не обязан поддерживать докачку.


 
Piter ©   (2004-06-30 01:02) [3]

Кстати, да. Хотя если говорить о ФТП - то в 99% случаев это присутствует. Да и в апачах счас это активно настраивают...



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
10-1033633458
Comwad
2002-10-03 12:24
2004.08.29
Опять про злосчастный "Assertion faild: _reply_message!=(..."


3-1091447741
DSKalugin
2004-08-02 15:55
2004.08.29
Агрегатные функции со строками AVG(), min(),max()...


1-1092231625
andrey__
2004-08-11 17:40
2004.08.29
Организация очереди


1-1092717893
Sash
2004-08-17 08:44
2004.08.29
загрузка HTML в МЕМО


14-1091985919
AlexG
2004-08-08 21:25
2004.08.29
Говорят, технология ActiveX устарела