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

Вниз

FileStream и idHTTP при докачке файла.   Найти похожие ветки 

 
GlooK   (2007-05-05 18:42) [0]

Делаю программу, которая качает файлы и докачивает их.
Вот листинг кода:

if FileExists(xFilename) then
 begin
   hFile := TFileStream.Create(xFilename, fmOpenReadWrite);
   hFile.Position := hFile.Size;
   fSize:=hFile.Size;
 end else
 begin
   hFile:= TFileStream.Create(xFilename, fmCreate);
   fSize:=0;
 end;
HTTP.Request.ContentRangeStart:=fSize;
try
HTTP.Get(xURLFile, hFile);
except
HTTP.Free;
hFile.Free;

Так вот, фишка в том, что когда файл начинает качатся, то размер созданого файла становится равный оригинальному (хотя он ещё не скачался) - такая фишка в качалках называется "Резервирование места на диске".
Это ,казалось бы, ничего, но моя программа всегда прерывается "убиванием процесса в taskmgr". И в итоге у файла остается размер скаченного файла. А моя система устроена так, что необходимость докачки определяется по размеру.
Как мне решить данный трабл?


 
DVM ©   (2007-05-05 22:49) [1]


> Как мне решить данный трабл?

Во-первых, не убивать через таскменеджер.
Во-вторых, хранить размер еще в каком-нибудь файле-спутнике, который удалять после скачки.


 
Alexey (AZ)   (2007-05-07 15:16) [2]


> Как мне решить данный трабл?

FileFromWWW.zip.wrk -> FileFromWWW.zip
Недокаченый -> Докаченый


 
GlooK   (2007-05-10 22:57) [3]


> Во-первых, не убивать через таскменеджер.


Тогда мне надо чтобы прога нормально завершала свою работу, когда завершаешь работу Windows.
> Во-вторых, хранить размер еще в каком-нибудь файле-спутнике,
>  который удалять после скачки.


> FileFromWWW.zip.wrk -> FileFromWWW.zipНедокаченый -> Докаченый


Дело в том, что когда начинается скачка, файл в который происходит запись автоматом забивается нулями до оригинально размера. А когда прогу завершаешь некорекктно, то размер так и остается.

Как мне кажется тут проблема в стриме. Может быть это опционально отключается? (Забитие нулями)


 
GlooK   (2007-05-19 02:30) [4]

UP!


 
SlymRO ©   (2007-05-23 14:07) [5]

HTTP.OnWork:=OnDownload;

procedure TInternet.OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
begin
 if Terminated then HTTP.Disconnect;//тута проверяем на необходимость закрыть приложение
 BeginUpdate;
 try
   Max:=HTTP.Response.ContentLength;
   Position:=AWorkCount; //Position - нужный нам параметр, сохраняем его
 finally
   EndUpdate;
 end;
end;



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

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

Наверх




Память: 0.45 MB
Время: 0.044 c
15-1199867455
Piroxyline
2008-01-09 11:30
2008.02.10
Про винду *rofl*


15-1199300008
@!!ex
2008-01-02 21:53
2008.02.10
Защита данных. Virtual Box


15-1199303878
Lip
2008-01-02 22:57
2008.02.10
Оцените код


15-1199938997
Interfer0n
2008-01-10 07:23
2008.02.10
Ищем Delphi программиста


15-1199317232
Германн
2008-01-03 02:40
2008.02.10
Командировка в Димитровград





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский