tfilestream.seek和偏移混淆

Oma*_*bal 4 delphi indy tfilestream

这是从https://forums.embarcadero.com/message.jspa?messageID=219481获取的代码段

if FileExists(dstFile) then
begin
  Fs := TFileStream.Create(dstFile, fmOpenReadWrite);
  try
    Fs.Seek(Max(0, Fs.Size-1024), soFromBeginning);
    // alternatively:
    // Fs.Seek(-1024, soFromEnd);
    Http.Request.Range := IntToStr(Fs.Position) + '-';
    Http.Get(Url, Fs);
  finally
    Fs.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我不明白究竟什么是抵消,为什么Max(0,Fs.Size-1024)在它的占位符中,如果你去下面(在代码中)

// alternatively:
    // Fs.Seek(-1024, soFromEnd);
Run Code Online (Sandbox Code Playgroud)

到底是什么'-1024'...为什么总是使用1024/-1024?并且会在偏移的起搏器工作中单独使用fs.size(我正在尝试使用暂停恢复支持进行下载管理)并且在上面的代码中用tmemmorystream替换tfilestream会对程序产生任何影响吗?

如果重要:我使用d2007和d2010

Chr*_*ton 6

看起来你正在寻找文件末尾的1024(或0,如果文件还不是那么大).这都与恢复传输有关.你认为文件的末尾已损坏.修剪废话(或从0开始),这样你就不会在糟糕的情况下添加好的数据.

打个比方:你正在建造一座冰城堡.天黑了,你一夜之间就会下大雨.第二天,你拿到电锯,看到一英寸的碎屑,露出干净的冰块.现在你从那里开始建设.