OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 08 Январь, 2026 22:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Четверг, 04 Сентябрь, 2025 11:24 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3840
Дмитрий_ВБ писал(а):
Желающие создать исполняемый файл для ВВ 2.0 могут воспользоваться предложением
Ивана Денисова

Да, это было для желающих! Спасибо вашему проекту за то, что он стал отличным примером


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 05 Сентябрь, 2025 18:13 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 177
Здравствуйте, Иван.

Когда я написал, что у меня нет сил, то это в буквальном смысле.
У меня возрастная гипертония и от интенсивной умственной работы подскакивает давление.
Это вам хорошо - программируйте, пока молодой. Ну относительно - расцвет умственных возможностей
у людей по статистике (не помню где прочел) приходится на возраст от 40 до 50 лет.

Установка среды вызывает вопросы по той причине, что я не спец по linux (под win все ясно - разворачиваешь
архив в нужную папку, и готово). Комментарии по установке под linux очень скупые, типа умному спрашивать
ни к чему, а дураку и расспросы не помогут.
Это Вы звезды с неба хватаете и врубаетесь во все вопросы на раз - не все так могут.

Работа среды программирования под linux мне (неспециалисту по linux) представляется так:
программа смотрит, какая графическая библиотека установлена в linux, и на нижнем уровне подключает
средства работы с этой библиотекой. А на верхнем уровне программист использует вызовы среды
программирования и ему без разницы, какая графическая библиотека подключена.

Насколько я понял, у Вас под linux Gtk, а Борис Рюмшин и его команда работают с GNOME - иначе почему
бы скачанная мной с oberoncore.ru версия v.25.08 под linux работала без всяких дополнительных усилий
с моей стороны стразу после разворачивания архива ?

И кстати, почему бы Вам не объединить усилия с командой Бориса Рюмшина ?
А то у нас и так людей мало по сравнению с китайцами, да еще и силы собрать вместе не всегда умеем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 05 Сентябрь, 2025 22:46 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4747
Откуда: Россия, Орёл
Ну, уточню...
Дмитрий_ВБ писал(а):
Насколько я понял, у Вас под linux Gtk, а Борис Рюмшин и его команда работают с GNOME

GNOME в принципе работает на Gtk.
Более того, BlackBox в нашем варианте базируется на BBCP. И всё это работает именно на Gtk2.
Цитата:
- иначе почему
бы скачанная мной с oberoncore.ru версия v.25.08 под linux работала без всяких дополнительных усилий
с моей стороны стразу после разворачивания архива ?

Потому что мы сами привыкли работать без установки пакетов в систему. Так удобнее с BlackBox.
Цитата:
И кстати, почему бы Вам не объединить усилия с командой Бориса Рюмшина ?

Так мы и так работаем совместно давно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 06 Сентябрь, 2025 15:21 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 177
Спасибо, Борис, за разъяснение.
Я скачал с blackbox.oberon.org/download архив bbcb2-2.0~a1.build250.tar.gz,
распаковал его, загрузил в скачанный BlackBox распакованный проект linux_example.7z,
sdch092 был без ошибок собран согласно Vp/Docu/Quick-Start.odc и успешно запустился.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Сентябрь, 2025 22:16 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 177
Т.к за время более чем недельного обсуждения все как-то размазалось, решил собрать
основные вопросы вместе.
1. 30.08.25 я выложил файлы sdch090.zip и sdch_ish.zip с моей первоначальной версией
программы СДЧ для ВВ 1.5 и икВВ 2.0 v.24.07.
2. Днем позже я указал, что исполняемый файл для икВВ 2.0 v.24.07 мне собрать не
удалось и пояснил причину этого.
3. Иван Денисов выложил предложение, как создать исполняемый файл для ВВСР 2.0.
К крайней версии своего предложения он приложил архив linux_example.7z с
модифицированным проектом моей программы.
Цитата:
Иван Денисов пишет:
Такая схема удобная (которую я выложил выше, и которую поддерживаем в 2.0), что можно сразу из репозитория собирать и для Windows и для Linux из любой платформы без каких-либо манипуляций с файлами. Получается, что есть для вашего проекта отдельный Init для каждой платформы, и они никак не конфликтуют с файлами самого Блэкбокса. Вам остаётся настроить свой вариант Config для запуска программы, который уже может быть кросс-платформенным, как в случае этого проекта. VpConfig одинаковый для Windows и Linux.

Файл Vp/Docu/Quick-Start.odc, входящий в архив linux_example.7z, содержит описания создания
исполняемого файла как для ВВСР 2.0 win, так и для ВВСР 2.0 lin.
Чтобы посетителям темы не искать linux_example.7z по всему обсуждению, выкладываю
его здесь.
Вложение:
linux_example.7z [684.04 КБ]
Скачиваний: 266

4. Кроме того, т.к. в архиве, собранном Иваном Денисовым, отсутствует файл описания
первоначального варианта моей программы sdch090.txt, выкладываю также и его.
Вложение:
sdch090.txt [13.24 КБ]
Скачиваний: 285

5. Спасибо Ивану Денисову за ценное предложение,
НО ДАННАЯ ТЕМА ОТНОСИТСЯ К ПОДРАЗДЕЛУ "ДЛЯ НАЧИНАЮЩИХ", ПОЭТОМУ ВПРЕДЬ ПРОСЬБА К
ВЫСОКОКВАЛИФИЦИРОВАННЫМ ПРОФЕССИОНАЛАМ ВЫКЛАДЫВАТЬ ПОДОБНЫЕ НЕ СЛИШКОМ ОЧЕВИДНЫЕ
ДЛЯ НАЧИНАЮЩИХ ПРЕДЛОЖЕНИЯ В ТЕМАХ, БОЛЕЕ СООТВЕТСТВУЮЩИХ УРОВНЮ ОБСУЖДАЕМЫХ ВОПРОСОВ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Сентябрь, 2025 15:45 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3840
Ну я думаю, что для начинающих как раз полезно узнать, как собрать приложение своё в Блэкбоксе 2.0.
На основе вашего проекта здорово получилось пояснить!
Ваша сложность была в том, что запускали на версии от Бориса, и там не было некоторых модулей.
Впредь буду указывать более чётко на основе чего выложены инструкции, это всегда важно указывать.
Мой архив собирается из версии 2.0 с сайта:
https://blackbox.oberon.org/download


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 14 Сентябрь, 2025 21:53 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 177
Сборка исполняемых файлов в ВВСР 2.0 согласно документации на ВВСР

Все-таки я считаю, что вариант создания исполняемых файлов, предложенный
Иваном Денисовым, является нарочито усложненным. Он добавил к моему
проекту 3 дополнительных модуля плюс файл сценариев создания исполняемых
файлов Quick-Start.odc. Не совсем понятно, или это незавершенный прототип
автоматической сборки исполняемых файлов, или пример, приведенный в
педагогических целях для обучения начинающих. Но одному из разработчиков
ВВСР должно быть известно, что есть более легкий путь, описание которого
приведено в документации на ВВСР.
Согласно документации на ВВСР 2.0 сборка исполняемых файлов производится
почти так же, как и в ВВ 1.5 и как я описал ее в файле sdch090.txt.
Есть 3 отличия:
1. Надо поменять не BlackBox/Code/Config.ocf, как в ВВ 1.5, а файл
BlackBox/Std/Code/Config.ocf .
2. Содержание нового файла {Std}Config.odc:

MODULE StdConfig;
IMPORT StdCmds, StdWindows, StdDocuments, Converters, VpSdch090;

PROCEDURE Setup*;
VAR res: INTEGER;
BEGIN
StdWindows.Init;
StdDocuments.Install;
Converters.Register(
"StdDocuments.ImportDocument",
"StdDocuments.ExportDocument", "", "odc", {});
(*StdCmds.OpenAuxDialog('Obx/Rsrc/BlackBox', 'BlackBox Game Dialog')*)
VpSdch090.Do;
END Setup;

END StdConfig.

3. Под win32 я собирал на основе примера сборки MyBlackBox.exe, а под
linux - на основе примера сборки файла BlackBoxGameDemo.
Для обоих случаев я перед модулем StdConfig добавил список модулей моей
программы.
Команды сборки для win32 и linux см. в конце файла sdch090.odc,
находящегося в архиве Mod.tar.gz.

Чтобы запустить собранные исполняемые файлы на выполнение, следует
- скачать архивы sdch090.zip и sdch_ish.zip, выложенные в моем сообщении
от 30.08.25, и распаковать их;
sdch090.zip содержит структуру рабочего каталога исполняемой программы с
необходимыми для работы программы подкаталогами;
- заменить файл sdch090.exe, собранный в ВВ 1.5, одним из двух
исполняемых файлов (sdch090.exe или sdch090), распакованных из архивов
исполняемых файлов sdch_exw.zip и sdch_exl.tar.gz ;
- заменить в подкаталоге Vp/Rsrc рабочего каталога программы файлы
About.odc, Config.odc и GoFind.odc для ВВ 1.5 аналогичными файлами для
ВВ 2.0, взятыми из распакованного архива sdch_ish.zip ;
- запустить исполняемый файл на выполнение.
Вложение:
Mod.tar.gz [20.11 КБ]
Скачиваний: 235

Вложение:
sdch_exw.zip [726.34 КБ]
Скачиваний: 240

Вложение:
sdch_exl.tar.gz [697.1 КБ]
Скачиваний: 263


Еще меня заинтересовал вопрос, почему в ВВ нет пункта меню (кнопки)
"Build/Собрать проект", хотя в большинстве сред разработки такая
возможность есть еще с Dos-овских времен. И, читая обсуждение школьной
сборки, обнаружил, что там такая возможность Иваном Денисовым была
введена из педагогических соображений, правда для простых программ,
выводящих информацию в командной строке. Крайняя версия, выложенная
Иваном Денисовым на форуме - BlackBoxXXI_230121.zip .
Т.к. школьная сборка является ранней версией ВВСР 2.0, то я собрал в
ней почти сразу версию программы СДЧ для ВВ 2.0. Пришлось только в
IMPORT-ах закавычить несколько модулей, да и они были не нужны для
компиляции, а остались в наследство от приложенных к ВВ учебных
примеров, на основе которых я и написал СДЧ под ВВ.
СДЧ запустилась, только в окне конфигурации поля ввода цвета
отображаются серым цветом с надписью "ColorField" и не выбираются.
Почему - я разбираться не стал, т.к. меня интересовало другое.
Я переименовал sdch090.odc в Study.odc, скомпилировал и нажал кнопку
"Собрать". Ожидаемо ничего не получилось.
Вложение:
bbXXI.JPG
bbXXI.JPG [ 177.22 КБ | Просмотров: 5438 ]

А вот приведенная в окне "Study" команда
^Q DevLinker.Link Study.exe := ... работает.

Если сейчас по каким-либо причинам нет возможности полноценно
реализовать команду Build, то можно было бы сделать задание
соответствия между кнопкой "Cобрать" и выбранным пользователем
коммандером сборки. При этом подстановку временного StdConfig перед
началом сборки с возвратом стандартного StdConfig после окончания
сборки можно было бы выполнять автоматически.

Возможно, что дизайн школьной сборки - это прототип для будущих версий
ВВСР 2.0.


*** Кстати, я понял, почему у меня под linux не запустилась программа
sdch092 из архива linux_example.7z. В свойствах файла во вкладке
«Права» следует установить флажок «Разрешить выполнение файла как
программы».


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 15 Сентябрь, 2025 10:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3840
Огромное спасибо за обратную связь!
Да, действительно возможно собирать приложения в Блэкбоксе различными способами.
И алгоритм, который вы привели с заменой StdConfig, тоже вполне рабочий!

Мой пример не требует трюков с подменой файлов, но требует дополнительных модулей.

Минусы моего метода:
1. Требуются дополнительные модули для загрузчика и конфигуратора под каждую из целевых ОС

Плюсы:
1. Сложно вывести из строя среду разработки, случайно повредив исходный StdConfig
2. Возможна кросс-компиляция (сборка приложений для Windows в Linux, и наоборот)

Проект кросс-платформенного Блэкбокса преследовал цель удобной кросс-компиляции, поэтому хотел показать именно такой пример сборки.

Поэтому вы правы, что этот метод выглядит сложным, однако кросс-компиляция без замены файлов потребовала такого алгоритма.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 15 Сентябрь, 2025 11:53 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4747
Откуда: Россия, Орёл
Дмитрий_ВБ писал(а):
Еще меня заинтересовал вопрос, почему в ВВ нет пункта меню (кнопки) "Build/Собрать проект", хотя в большинстве сред разработки такая
возможность есть еще с Dos-овских времен.

Потому что при нормальной работе с BlackBox, собирать exe требуется в очень редких случаях. Обычно, когда что-то меняется в самой среде разработки, а не в прикладном программировании.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Декабрь, 2025 00:47 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 177
Редактор алгоритмов dalvjaz2 v.0.9.3.2.0

Программа еще сырая, т.к. это первая версия под BlackBox.
Некоторые места еще не отлажены и некоторые задумки еще не
реализованы.
Диалог программы является макетным, т.к. главным для меня было
перенести алгоритмы работы dalvjaz2 из Delphi в BlackBox, а не
пригладить внешний вид. Одним из проявлений этого является то, что
в Delphi я сначала рисовал окно во внутреннем BMP-изображении, а
уже потом копировал его в канву формы, а в BlackBox я строю
изображение прямо в рамке отображения, что иногда приводит к
заметному мерцанию при перерисовке изображения. Как я понимаю,
надо будет разбираться, как работать с растрами.

В общем творческий процесс идет, завершено перетаскивание под
BlackBox алгоритмов работы dalvjaz2, удалось отобразить схему
"Морозко".
Вложение:
001.png
001.png [ 62.97 КБ | Просмотров: 164 ]

Разработка ведется в win32, но программа собирается и запускается
и под linux.

Но есть 3 проблемы, которыми хочу поделиться. Может, кто и
подскажет что-нибудь.

Чтобы было понятно, о чем я буду спрашивать, вкратце опишу логику
работы dalvjaz2 под BlackBox.

Основная логика работы

Программа dalvjaz2, в отличие от СДЧ, должна одновременно
работать с несколькими окнами.
Взяв за основу пример Twins, где в одном окне создаются 2
дочерних отображения, я заменил окна документов окнами простого
графического редактора из примера Lines и получил модуль Lines3,
который и послужил прототипом для оконной системы dalvjaz2.
Сейчас работа идет с пятью дочерними окнами:
- окно верхних кнопок num_top;
- левое окно текста записи num_left;
- правое окно схемы (рисунка) num_right;
- окно файла комментариев num_bottom;
- окно нижних кнопок и сообщений num_bot_kn.
В отличие от СДЧ, сейчас у меня не одна книга (файл), а
несколько.
Файлы хранятся в массиве VpMybook.My_books.
VpMybook.tek_book - индекс текущего файла.
Файл комментариев хранится в VpMybook.My_book2.
Указатель на текущий файл VpMybook.My_book в зависимости от
режима работы может указывать либо на один из файлов массива
My_books, либо на файл комментариев My_book2.

Переключение между окнами и, соответственно, файлами производится
следующим образом:

VpMyDialog.win_number := win_num;
VpMyDialog.form_My_book__ns(ns);

В form_My_book__ns задаются указатель My_book и номер скроллера для
выбираемого окна.

Альтернативный вариант:

VpMybook.focus_win := num_left;
Set_win_number;

аналогичен нервому:

PROCEDURE Set_win_number;
VAR ns:INTEGER;
BEGIN
VpMyDialog.win_number := VpMybook.focus_win;
VpMyDialog.form_My_book__ns(ns);
END Set_win_number;

При отрисовке окон:

VpDalvjaz2.View_2.Restore ->
VpRestore.Restore(v.num, f, l, t, r, b),

в начале которой тоже по полученному параметру задается номер
отрисосвываемого окна и указатель на файл.


Проблема 1:

В процедуре VpMyDialog.Insert_comment перед записью измененной
строки с добавленным комментарием :
VpPerekod.StrCopy(stro, VpMybook.My_book.GiveStr(
VpMybook.My_book.n_sel)^);

пришлось вставить защитное задание окна и указателя на нужный файл,
т.к. без этого строка записывалась в файл комментариев.


Вопрос:

Может ли прорисовка окон прерывать ход выполнения процедуры,
в результате чего содержимое указателя My_book меняется на файл,
окно которого было перерисовано в последнюю очередь ?


Проблема 2:

Иногда при попытке сдвинуть границу окон текста и схемы при
наведении указателя мыши на границу операция сдвига не
активируется. В этом случае следует навести указатель мыши на
левую границу окна программы, после чего снова попробовать
выполнить сдвиг границы окон текста и схемы, или воспользоваться
клавишами Alt+"<-" и Alt+"->".

Обработка сдвига вертикальной границы текста и схемы производится
в процедуре VpDalvjaz2.View.HandleCtrlMsg по событиям

msg: Controllers.CursorMessage
msg: Controllers.PollCursorMsg - здесь задается форма
указателя мыши

msg: Controllers.TrackMsg - здесь производится изменение
границы текста и схемы.

Примечание: Левые границы дочерних отображений задаются на 2 мм.
правее левой границы основного окна в процедуре
VpDalvjaz2.RecalcLayout


Проблема 3:

Иногда при вызове по клавише клавиатуры окна диалога
(редактирование, конфигурация) программа зависает по Trap division
by zero в процедуре Ports.Frame.Drawrect
Вложение:
002.png
002.png [ 23.63 КБ | Просмотров: 164 ]

При вызове диалогов по клику мышью на соответствующей кнопке
диалога такого у меня не было.

Раньше уже были падения в процедуре Ports.Frame.Drawrect по
нарушению предусловия: t > b, так что я написал процедуру
VpRestore.MyDrawRect, в которой ввел защиту на этот случай, а также
проверку рамки, в которой будет рисоваться прямоугольник - чтобы
это была одна из моих рамок, а не какая-нибудь другая и не NIL. Но
в данном случае это не помогло.
Сообщения от клавиатуры обрабатываются в процедуре
VpDalvjaz2.View.HandleCtrlMsg
При вызове окон диалога флаг
VpMyDialog.fl_redraw_after_key = FALSE
По значению переменной qqq = 1 видно, что Trap происходит при
первом вызове MyDrawRect в процедуре VpDalvjaz2.View.Restore,
когда производится перерисовка фона главного окна программы.

Краткое описание алгоритмического языка ДАЛВЯЗ 2 приведено
в файле dal2_short.pdf.
Вложение:
dal2_short.pdf [153.13 КБ]
Скачиваний: 4

Краткое описание программы dalvjaz2 приведено в файле
/Rsrc/txt/Dal2doc.utf8, находящемся в архиве dal2v09320.zip,
который следует развернуть в каталог Vp.
Вложение:
dal209320.zip [789.24 КБ]
Скачиваний: 3

Рисунки для схемы “Морозко” находятся в архиве morozko.zip,
а описание, что с ними делать, приведено в начале файла
Dal2doc.utf8.
Вложение:
morozko.zip [472.22 КБ]
Скачиваний: 4


Поздравляю всех с наступающим Новым Годом.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2026, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB