![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FileStream и idHTTP при докачке файла. [D7, WinXP]
GlooK © (2007-05-05 18:42:00)Делаю программу, которая качает файлы и докачивает их.
Вот листинг кода:
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". И в итоге у файла остается размер скаченного файла. А моя система устроена так, что необходимость докачки определяется по размеру.
Как мне решить данный трабл?
SlymRO (2007-05-23 14:07:00) [1]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;
GlooK (2007-05-19 02:30:00) [2]UP!
GlooK (2007-05-10 22:57:00) [3]
> Во-первых, не убивать через таскменеджер.
Тогда мне надо чтобы прога нормально завершала свою работу, когда завершаешь работу Windows.
> Во-вторых, хранить размер еще в каком-нибудь файле-спутнике,
> который удалять после скачки.
> FileFromWWW.zip.wrk -> FileFromWWW.zipНедокаченый -> Докаченый
Дело в том, что когда начинается скачка, файл в который происходит запись автоматом забивается нулями до оригинально размера. А когда прогу завершаешь некорекктно, то размер так и остается.
Как мне кажется тут проблема в стриме. Может быть это опционально отключается? (Забитие нулями)
Alexey (AZ) (2007-05-07 15:16:00) [4]
> Как мне решить данный трабл?
FileFromWWW.zip.wrk -> FileFromWWW.zip
Недокаченый -> Докаченый
DVM (2007-05-05 22:49:00) [5]
> Как мне решить данный трабл?
Во-первых, не убивать через таскменеджер.
Во-вторых, хранить размер еще в каком-нибудь файле-спутнике, который удалять после скачки.