Модификация StreamCopy
Позволяет работать со стримами до 4 Гб. Существующий компонент использует функцию KOL, которая копирует Count байт напрямую в память, поэтому размер копируемых данных жестко ограничен максимальным непрерывным свободным блоком оперативной памяти. У меня при ОЗУ 3.5 Гб (Win 32 bit) 1.3 Гб файл таким образом уже не копируется.
В моем моде используется переработанная KOL-овская процедура, которая копирует в память не сразу Count байт, а блоками в BufferSize байт. В архиве есть демонстрационная схема: проверьте максимальный размер копируемого файла при BufferSize=0 и например BufferSize=10485760 (10 Мб).
При работе со стримами более 2 Гб следует учитывать, что свойства стрима Size и Position будут отрицательными. Если эти свойства напрямую передаются от одного компонента к другому без проведения вычислений - всё будет работать как надо. Но если вам нужно выполнить какую-нибудь мат. операцию с этими числами (например, компонентом Math) - нужно предусмотреть соответствующую логику с положительными и отрицательными числами.
При BufferSize=0 (по-умолчанию) полностью отключается новый функционал и компонент работает по-старому.
StreamCopy Mod 1-4
ВНИМАНИЕ: в предыдущих версиях мода BufferSize указывался в мегабайтах, теперь - в байтах
Ответов: 4630
Рейтинг: 749
|
|||
карма: 26 |
| ||
Голосовали: | login, Ex_ |
Редактировалось 3 раз(а), последний 2017-04-05 11:29:05