> -- Info21 писал(а):
> программа (которая вызывается из меню или командиром в другом документе) не открывает поток, а только, если надо, читает с начала (Restart).... тут нюансы, все сразу не помню, но один вот:

Когда две разные команды должны брать данные из входного потока -- то плохо, когда они обе пытаются его открывать.
Но если каждая сделана так, что просто его читает "с текущей позиции", то данные для этих двух последовательных команд тоже просто две сконкатенированные последовательности.
Удобней именно так (это вывод из "долго думал", причем с реальным примером из жизни).

В любом случае так сделанную команду можно обеспечить данными, приставив впереди Open:

(!)"i21sysIn.Open;Модуль.Команда(параметры)" поток ввода ~

В общем, такое параллельное складывание команд и их потоков данных.

Открытая опция (ее, как представляется, нужно будет реализовать) -- добавить возможность делать интерактивную конкатенацию потоков данных, т.е. наряду с Open добавить Append, когда выделенный фрагмент текста прицепляется к уже "туда" зааттаченному.
Но это добавление к модулю чисто аддитивное, всё уже существующее не будет затронуто.

И последний сейчас пунктик: Restart, строго оговоря, избыточен: раз виден сканер, -- а именно он работает, когда вызываются команды чтения Int, Real и т.д., -- то можно запомнить его позицию и, когда надо, туда его снова поставить.
Но на практике (особенно в учебном контексте) это достаточно громоздко, чтобы оправдать спецфасадик.