Главная страница
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.48 MB
Время: 0.02 c
6-1179212393
gimbat
2007-05-15 10:59
2008.02.10
Спам фильтр для Exchange Server


2-1200563240
Ivolg
2008-01-17 12:47
2008.02.10
Установить пароль


15-1198113820
Anatoly Podgoretsky
2007-12-20 04:23
2008.02.10
О выборе платформы для ВЕБ и ФТП сервера


15-1200057682
Sairex
2008-01-11 16:21
2008.02.10
Срочно нужна помощь По написаню макроса в Exel


15-1199355046
(MiTch)
2008-01-03 13:10
2008.02.10
Установка компонента Hhopen.