====== Блэкбокс 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);