Главная страница
    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.05 c
1-1092121273
ALS
2004-08-10 11:01
2004.08.29
TListImage и разрешение экрана


1-1092339983
Cobalt
2004-08-12 23:46
2004.08.29
Установка компонент в D7


3-1091450350
ZHK
2004-08-02 16:39
2004.08.29
Как в реальном времени добавить поля в таблицу?


1-1092656409
Alek
2004-08-16 15:40
2004.08.29
ПРограммы для КПК


14-1092009303
Sergey Kaminski
2004-08-09 03:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский