ppkp Насчет компонента. А что мешает воспользоваться стандартной практикой и реализовать в компоненте событие, скажем OnProgress, а в форме, где используешь этот компонент - написать обработчик события? Имхо, зачем придумывать лисапед, когда уже все давно придумано.
Но если все же надо через сообщения...
Цитата: Application.ProcessMessages стоит в главной (вызывающей) программе, а в компоненте-то зачем его ставить ?
Затем, что в компоненте любые методы в конечном счете отрабатывают, как реакция на то или иное событие. И если на какое-то событие реакция весьма длительна (скажем твой цикл), то само собой, никакие другие сообщения не выбираются из очереди и не обрабатываются, пока не закончится обработка этого текущего сообщения, как следствие, твоя форма физически не получает твоего сообщения, пока не закончится цикл.
Весь смысл метода Application.ProcessMessages - организовать локальный цикл выборки сообщений. Т.е., на пальцах: в текущий момент времени выбрать из очереди сообщений накопившиеся там сообщения и обработать. Всё. Смысл его вызывать перед началом цикла в главной программе??? Когда у тебя работает цикл, то, опять же , на пальцах, пока этот цикл не закончится, никакие сообщения из очереди сообщений не выбираются и не обрабатываются. Application.ProcessMessages надо вызывать не перед и не после, а ИМЕННО В ЦИКЛЕ! Тогда при каждом вызове Application.ProcessMessages выполнение цикла приостановится, сообщения из очереди выберутся и обработаются, после чего цикл продолжится.
DmitryKz Учитывая что у вас на данный момент 200 файлов общим распакованным размером 125 мб при использовании TMemoryStream обрабатывалось 3 минуты, а в моем тесте 200 файлов по 62 мб, т.е. общим объемом 12305 мб (или 12 гб) обрабатывалось в течение 3-х с половиной минут
...