1) Не совсем понимаю, как нестандартные реализации файловых систем будут конфликтовать с этажностью. Есть локатор, он в ББ связан с неким текстовым обозначением расположения, причем как это обозначение соотносится с реализацией ФС - не определено. Так вот, есть три расположения, есть три локатора - вот вам и три этажа. Могу вообразить запуск ББ, при котором стандартный этаж - это то, что упаковано в .exe, пакетный этаж - где-то на накопителе, а рабочий этаж - в ОЗУ, через MemFiles.
2) Я правильно понял, что вы предполагаете два разных HostFiles: один для разработки, другой для эксплуатации? Если так, то ведь в каждом модуле свои ошибки )). Только в идеальном мире можно взять и заменить идеальный разработочный HostFiles на идеальный эксплуатационный HostFiles; а в реальном - с новым HostFiles все тестирование (и наладку) начинай с начала. Не?
3) Пары ключ-значение, нагружающие динамическую память, и запись с полями - это очень разные подходы. Я прям не вижу причин, чтобы в развитом языке и среде, как ББ, завязываться на этот механизм. Это ж какой геморрой: мне нужен один параметр, а я должен получить их все, перебрать, и найти этот единственный. И почему обязательно строковое значение параметра предполагается? И зачем нагружать динамическую память и сборщик мусора? Это какой-то сборник переменных окружения получается.
Надо, пожалуй, договориться сначала по пунктам 1 и 2, а потом уж договариваться, как узнать расположения (пути) этажей. Можно, если это нужно, и не вводить трехэтажность на уровень System, а, например, на уровень Std или Dev.
П.С. и кстати трехэтажность - не принципиальный момент. Как я писал выше, в двухэтажном ББ тоже эта проблема стоит, и решается через хак Гельмута; т.е. не решается.
К слову, если перейти к "герметизации", то вместо HostFiles, которые разные, но одноименные в Windows и Linux, будут LinFiles и WinFiles. И тогда хак Гельмута не пройдет: клиентский модуль не может одновременно импортировать и то, и другое, чтобы написать IF чегонибудь THEN path := loc(LinFiles).path$ ELSE path := loc(WinFiles).path$ END Так что если захотим герметизации и однозначного соответствия имяМодуля-телоМодуля в модульном наборе ББ - то придется и этот вопрос как-то решать, и формализовать на платформонезависимом уровне работу с путями, т.е. прояснять взаимосвязи между локаторами.
|