User Tag List

Показано с 1 по 10 из 1843

Тема: Эмулятор ДВК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Изменение эмулируемой конфигурации. 2. Формат файлов конфигурации.

    Изменение эмулируемой конфигурации.

    Формат файлов конфигурации.
    --------------------------------------------

    Так как имеющихся в комплекте поставки эмулятора .cfg-файлов не достаточно "на все случаи жизни", то прежде чем копировать их под другими именами и затем изменять, или "с чистого листа" создавать новые - полезно в общих чертах уяснить, что именно и зачем там написано.

    Все файлы конфигурации имеют ( в основном ) следующий формат:
    Код:
    [section]
    key = value
    ; comment
    основанный на формате MS PrivateProfile для .ini-файлов.

    Символ ';' имеет особый смысл и исключает строку из рассмотрения ( превращая её в комментарий ) только в том случае, когда является первым непробельным символом в строке.

    Три секции в каждом .cfg-файле ( обычно располагающиеся в начале файла ) имеют специальное назначение.

    ...

    Секция [modules] содержит объявления используемых модулей в формате:
    Код:
    имя_модуля = путь_к_файлу_модуля
    Модули эмулятора - это обычные файлы .dll, переименованные в .em

    Поиск файла модуля ( если путь к файлу модуля не исключает такой возможности ) вначале осуществляется в каталоге встроенных модулей. В комплекте поставки "эмулятора ДВК" все поставляемые модули встроены в файл pdp11.exe.

    В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем каталога встроенных модулей отсутствуют.

    Чтобы экспортируемые модулем объекты могли быть использованы в эмулируемой конфигурации - модуль должен быть объявлен в секции [modules].

    ...

    Секция [objects] содержит объявления используемых объектов в формате:

    Код:
    имя_объекта = имя_модуля:тип_экспортируемого_модулем_объекта
    В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем списка экспортируемых модулем объектов отсутствуют.

    В процессе загрузки файла конфигурации - объекты создаются в том порядке, в котором они объявлены в секции [objects], и если объект создаёт окно средствами модульного API - такие окна располагаются на панеле закладок объекта Config в порядке создания "владеющих" ими объектов ( слева направо ).

    Все имена объектов, объявленных в секции [objects], должны быть уникальны (иначе эмулятор будет ругаться).

    ...

    Секция [links] содержит строки ( несовместимые с форматом MS PrivateProfile для .ini-файлов ), описывающие способы динамического связывания созданных объектов на специальном языке описания связей ( который будет рассмотрен позже ).

    В секции [links] "поведение" символа ';' отличается от других секций. В любых других секциях символ ';' "работает" ( превращая строку в комментарий ) только в самом начале строки, а в секции [links] - символ ';' означает начало комментария в любой позиции.

    Это позволяет "отключать" несколько последних элементов в строке описания группового присоединения, без необходимости их полного удаления из строки.

    ...

    Все остальные секции .cfg-файлов имеют формат:

    Код:
    [имя_объекта.ini]
    параметр = значение
    ; комментарий
    и автоматически размещаются там объектами при их первом создании ( в том случае, если объект имеет хотя бы одно хранимое состояние или хотя бы один хранимый параметр ).

    Если изменить имя какого-либо из объектов, создаваемых в ранее загружавшемся файле конфигурации - в этом файле конфигурации появится новая секция, тогда как "старая и бесхозная" - никуда не денется. Это сделано для того, чтобы при временном "выкомментировании" объектов из конфигурации - секции с их настройками не пропадали.

    Начальные значения всех параметров в "свежей" секции объекта - соответствуют их значениям по-умолчанию. Только что автоматически созданная "свежая" секция объекта не может содержать значений базовых параметров ( из глобального ini-файла класса ), однако при любом изменении базовых параметров экземпляра объекта в процессе эмуляции - их изменённые значения будут сохранены в секции этого объекта в файле конфигурации.
    Последний раз редактировалось Patron; 14.01.2014 в 19:19.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Изменение эмулируемой конфигурации. 3. Использование консолей.

    Изменение эмулируемой конфигурации.

    Свойства окон объектов.
    -----------------------------------


    Чтобы главное окно объекта попало в закладки конфига - оно должно быть создано при помощи модульного API. Все такие окна принадлежат к базовому классу Workfield, а автоматически создающие их объекты - к базовому классу WorkfieldOwner. Это обеспечивает универсальное единообразие свойств главных окон объектов модульного API.

    Для выяснения этих свойств - создадим пустой файл, назовём его test.cfg и загрузим в эмулятор командой меню "Файл -> Открыть":

    Скрытый текст

    [свернуть]


    Открыв затем файл test.cfg в текстовом редакторе - можно обнаружить, что объект Config уже "прописал" туда свою секцию:
    Код:
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar]=0
    SaveChangesFor[ControlBar]=0
    InitialStateOf[StatusBar]=0
    SaveChangesFor[StatusBar]=0
    Изменим значения состояний ControlBar и StatusBar на 1:

    Код:
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar] = 1
    SaveChangesFor[ControlBar] = 0
    InitialStateOf[StatusBar]  = 1
    SaveChangesFor[StatusBar]  = 0
    и снова запустим эмулятор:

    Скрытый текст

    [свернуть]

    Сравнив результаты можно заметить, что выше и ниже окна закладок появились полосы для размещения виджетов ( верхняя называется ControlBar, а нижняя - StatusBar ).

    Отключим верхнюю полосу, установив InitialStateOf[ControlBar] опять в 0 и добавим в файл test.cfg строки, необходимые для создания консоли:

    Код:
    [modules]
    
    Main = Main_module.em
    
    [objects]
    
    Con  = Main:Console
    
    
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar] = 0
    SaveChangesFor[ControlBar] = 0
    InitialStateOf[StatusBar]  = 1
    SaveChangesFor[StatusBar]  = 0
    Снова запустим эмулятор:

    Скрытый текст

    [свернуть]

    Открыв ещё раз файл test.cfg в редакторе - можно обнаружить, что там появилась новая секция, размещённая созданным экземпляром консоли:

    Код:
    [Con.ini]
    TabTitle=""
    InitialStateOf[ControlBar]=1
    SaveChangesFor[ControlBar]=0
    InitialStateOf[StatusBar]=1
    SaveChangesFor[StatusBar]=0
    LeftDumpSeparator="«"
    RightDumpSeparator="»"
    InitialStateOf[Dump]=1
    SaveChangesFor[Dump]=0
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    Как видим - здесь состояния ControlBar и StatusBar имеют по умолчанию значения 1, поэтому, перейдя на закладку Con можно окончательно убедиться, что окно консоли имеет свои собственные полосы виджетов и что по умолчанию они включены:

    Скрытый текст

    [свернуть]


    То же справедливо и для окон "свежесозданных" объектов типа Terminal - у них верхняя и нижняя полосы главного окна также по умолчанию включены:

    Скрытый текст


    Код:
    [modules]
    
    Main = Main_module.em
    Term = Terminal_module.em
    
    [objects]
    
    Con  = Main:Console
    VTxx = Term:Terminal
    [свернуть]

    ...

    Все главные окна объектов ( кроме окна корневого конфига ) имеют параметр TabTitle, определяющий название закладки. По умолчанию этот параметр не задан и тогда название закладки главного окна объекта совпадает с именем объекта, указанным при его создании.

    Однако, если в нашем тестовом файле конфигурации test.cfg изменить параметры TabTitle консоли и терминала на "Консоль", то результат может показаться довольно оригинальным:

    Скрытый текст

    [свернуть]
    Последний раз редактировалось Patron; 29.12.2012 в 13:01.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 20
    Последнее: 03.09.2024, 13:24
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •