Содержание

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