Главная страница
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.04 c
4-1183217803
JanMihail
2007-06-30 19:36
2008.02.10
Как узнать раскладку клавиатуры


15-1199784471
porter
2008-01-08 12:27
2008.02.10
Диаграмма классов


15-1199318746
radium
2008-01-03 03:05
2008.02.10
Какой диск выбрать в качестве системного?


8-1173450743
Аликъ
2007-03-09 17:32
2008.02.10
bass уровень


15-1199966204
pavel_guzhanov
2008-01-10 14:56
2008.02.10
Может кто-нибудь помочь по Excel?