Так получилось, что в результате обсуждений и голосований в Центре, существующие сборки разошлись на достаточно низком уровне и на уровне интерфейса Files.
http://blackboxframework.org/unstable/m ... a1.037.zipБыл в ББ начат один тренд, связанный с тем, что раньше (как я понял в версии 1.4) Files.NewWriter возвращал NIL, если файл открыт в неразделяемом режиме, ну а в новых версиях это убрали, заменив аварийной остановкой. Это создало трудности, что до вызова NewWriter невозможно определить в каком состоянии файл и также нельзя определить был ли он уже закрыт или нет.
В сборке OberonCore проблема решилась возвращением NIL в качестве работы NewWriter, но центр решил пойти иным путем с подачи Криса Б. и при поддержке Джозефа Темпла, а также проголосовавших за (Robert, Ivan Denisov, luowy, bernhard, Zinn) было принято решение привести не код в соответствие к документации, а документацию в соответствие к коду. А проблему решить добавив две процедуры Closed и Shared. Таким образом в тех редких случаях, когда это действительно нужно, возможно перед открытием проверить статус файла.
Почему такие случаи действительно должны происходить редко. Поскольку в документации к Блэкбоксу прописано правило, что надо открывать файлы только в режиме для совместного пользования. «Открытие файла в разделяемом режиме (shared) является правилом в BlackBox; открытие файла в монопольном режиме (exclusive) — редкое исключение». Это значит, что открыв файл через Old вы никогда не можете вызвать для него NewWriter. Контроль над недопусканием такой ситуации ложиться на плечи программиста.
Однако, если представить, что запись о неком файле получена в нашем модуле извне, то определить в каком состоянии файл в каркасе нет возможности... вот для этого и добавлена процедура Shared(). Процедура Closed добавлена по аналогичной причине. Дело в том, что если все каретки над файлом удалены, то каркас может закрыть файл, при этом программист об этом узнать также никак не мог. Ситуации хотя редкие, тем не менее строгость в таком вопросе должна быть.
Вот такой получился длинный комментарий.