Поскольку он пытается создать менеджер загрузок, который может останавливать и возобновлять загрузки, идея заключается в том, что при возобновлении он хочет немного отступить назад и повторно запросить некоторые данные, которые ранее были отправлены только вВ этом случае отключение было вызвано ошибкой, вызвавшей повреждение полученных данных.Большинство менеджеров закачек, которые я видел, отступят как минимум на 4 КБ;Похоже, что это только 1 КБ.
Если вы поместите fs.Size в заполнитель в одиночку, тогда он вообще не отступит, что может привести к повреждению данных.
А замена TFileStream на TMemoryStream будет означать, что вы загружаете в ОЗУ, а не на диск, и если компьютер падает или теряет питание, или ваше приложение каким-то образом падает, весь прогресс теряется.Так что это не очень хорошая идея.Кроме того, загрузка в ОЗУ ограничивает размер вашей загрузки доступным размером вашего адресного пространства, что делает загрузку больших файлов (например, ISO-дисков DVD) либо невозможной, либо, по крайней мере, намного более сложной, чем это необходимо.