Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
1-1092384438
sig
2004-08-13 12:07
2004.08.29
Про BackSpase


4-1089993436
Iks
2004-07-16 19:57
2004.08.29
Выделенный текст


1-1092210799
ruslan
2004-08-11 11:53
2004.08.29
Timage


1-1092226114
TEXHAPb
2004-08-11 16:08
2004.08.29
Простой вопрос: C -> Pascal


14-1091778547
Knight
2004-08-06 11:49
2004.08.29
Помехи на экране монитора...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский