====== Блэкбокс 2.0 ======
На данной странице находится перечень основных изменений системы Блэкбокс версии 2.0 от версии 1.7.2, а также некоторые рекомендации по адаптации программных кодов под новую версию.
===== Нововведения =====
==== Настойчивые действия ====
''Services.InsistentAction'' --- это подтип ''Services.Action'', который не блокируется при зажатии кнопок мыши.
==== Безопасные действия ====
''Services.SafeAction'' --- это удобная высокоуровневая обёртка над ''Kernel.Try''. Возможно выполнить код, и узнать после, упал он или нет, в процессе выполнения. При этом работа каркаса не будет повреждена.
==== История операций не удаляется при сохранении файла ====
Старое поведение возможно вернуть, установив константу ''StdCmds.clearSeqOnSave'' в ''TRUE''.
==== Три уровня виртуальной файловой системы ====
Кроме переменной окружения USE, теперь возможно использовать дополнительный промежуточный каталог CUSTOM.
Таким образом существует три каталога: STANDARD, CUSTOM и USE.
Возможно получить их локаторы при обращении к Files, соответственно:
loc := Files.dir.This("STANDARD:");
loc := Files.dir.This("CUSTOM:");
loc := Files.dir.This("");
==== Библиотекарь ====
''StdLibrarian'' --- это новый инструмент для управления расположением исходников и артефактов компиляции. Библиотекарь определяет также правила разделения имени модуля на подсистему и имя файла модуля, а также определяет расширения файлов в системе для исходников и артефактов (кодовый, символьных файлов).
===== Миграция =====
==== Получение пути локатора ====
Для получения пути от локатора теперь есть платформенно-независимая команда. Теперь не требуется импортировать для этой задачи платформенную реализацию модуля Files.
Dialog.GetLocPath(loc: Files.Locator; OUT path: ARRAY OF CHAR);
==== Закрыть диалоговое окно ====
Вместо команды ''HostCmds.Close'' используйте ''StdCmds.CloseTopDialog''
==== Получить имя файла с добавкой стандартного расширения ====
Вместо команды ''Kernel.MakeFileName'' используйте ''Files.dir.GetFileName''
==== Получить название подсистемы и название файла из имени модуля ====
Вместо команды ''Kernel.SplitName'' используйте ''StdLibrarian.SplitName''
==== Вместо StdDialog.GetSubLoc используйте StdLibrarian ====
StdDialog.GetSubLoc(n, "Mod", loc, fname);
стоит заменять на
StdLibrarian.GetSourceSpec(n, loc, fname, ftype);
Files.dir.GetFileName(fname, ftype, fname);