Форум: "Сети";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c