OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 29 Апрель, 2024 00:02

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: DevPacker
СообщениеДобавлено: Пятница, 18 Ноябрь, 2005 01:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вот, друзья, проблемка возникла. Вчера попробовал использовать DevPacker. Не работает! Даже примеры из документации. Просто виснет наглухо.
Кто-нибудь с этим модулем работал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 19:34 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Странно, примеры из документации работают... А можно на код посмотреть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 19:43 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
(КОМАНДЕР) DevPacker.PackThis bbpacked.exe := "Text/Rsrc/Strings.odc" "Text/Rsrc/Menus.odc"
"Text/Rsrc/Cmds1.odc" "Text/Rsrc/Cmds.odc"
"Text/Code/Views.ocf" "Text/Code/Setters.ocf"
"Text/Code/Rulers.ocf" "Text/Code/Models.ocf" "Text/Code/Mappers.ocf"
"Text/Code/Controllers.ocf" "Text/Code/Cmds.ocf"
"System/Code/Windows.ocf" "System/Code/Views.ocf"
"System/Code/Strings.ocf" "System/Code/Stores.ocf"
"System/Code/Services.ocf" "System/Code/Sequencers.ocf" "System/Code/Properties.ocf"
"System/Code/Printing.ocf" "System/Code/Printers.ocf" "System/Code/Ports.ocf"
"System/Code/Out.ocf" "System/Code/National.ocf" "System/Code/Models.ocf"
"System/Code/Meta.ocf" "System/Code/Mechanisms.ocf" "System/Code/Math.ocf"
"System/Code/Log.ocf" "System/Code/Kernel.ocf" "System/Code/Integers.ocf"
"System/Code/Init.ocf" "System/Code/In.ocf" "System/Code/Fonts.ocf"
"System/Code/Files.ocf" "System/Code/Documents.ocf" "System/Code/Dialog.ocf"
"System/Code/Dates.ocf" "System/Code/Converters.ocf" "System/Code/Controls.ocf"
"System/Code/Controllers.ocf" "System/Code/Containers.ocf" "System/Code/Config.ocf"
"System/Rsrc/Strings.odc"
"Std/Rsrc/ViewSizer.odc" "Std/Rsrc/TabViews.odc" "Std/Rsrc/Tables.odc"
"Std/Rsrc/Strings.odc" "Std/Rsrc/Stamps.odc" "Std/Rsrc/Scroller.odc"
"Std/Rsrc/Links.odc" "Std/Rsrc/Headers.odc" "Std/Rsrc/Folds.odc"
"Std/Rsrc/Coder.odc" "Std/Rsrc/Cmds1.odc" "Std/Rsrc/Cmds.odc"
"Std/Code/ViewSizer.ocf" "Std/Code/TabViews.ocf" "Std/Code/Tables.ocf"
"Std/Code/Stamps.ocf" "Std/Code/Scrollers.ocf" "Std/Code/MenuTool.ocf"
"Std/Code/Logos.ocf" "Std/Code/Log.ocf" "Std/Code/Loader.ocf"
"Std/Code/Links.ocf" "Std/Code/Interpreter.ocf" "Std/Code/Headers.ocf"
"Std/Code/Folds.ocf" "Std/Code/ETHConv.ocf" "Std/Code/Dialog.ocf"
"Std/Code/Debug.ocf" "Std/Code/Coder.ocf" "Std/Code/Cmds.ocf"
"Std/Code/Clocks.ocf" "Std/Code/CFrames.ocf" "Std/Code/Api.ocf"
"Sql/Code/Odbc3.ocf" "Sql/Code/Odbc.ocf"
"Sql/Code/Drivers.ocf" "Sql/Code/DB.ocf"
"Sql/Code/Controls.ocf" "Sql/Code/Browser.ocf"
"Ole/Code/Views.ocf" "Ole/Code/Storage.ocf" "Ole/Code/Server.ocf"
"Ole/Code/Data.ocf" "Ole/Code/Client.ocf"
"Host/Rsrc/Strings.odc" "Host/Rsrc/Setup.odc" "Host/Rsrc/Printing.odc"
"Host/Rsrc/Prefs.odc" "Host/Rsrc/Imptype.odc"
"Host/Code/Windows.ocf" "Host/Code/TextConv.ocf" "Host/Code/TabFrames.ocf"
"Host/Code/Registry.ocf" "Host/Code/Printers.ocf" "Host/Code/Ports.ocf"
"Host/Code/Pictures.ocf" "Host/Code/PackedFiles.ocf" "Host/Code/Menus.ocf"
"Host/Code/Mechanisms.ocf" "Host/Code/Mail.ocf" "Host/Code/Fonts.ocf"
"Host/Code/Files.ocf" "Host/Code/Dialog.ocf" "Host/Code/Cmds.ocf"
"Host/Code/Clipboard.ocf" "Host/Code/CFrames.ocf" "Host/Code/Bitmaps.ocf"
"Form/Code/Views.ocf" "Form/Code/Models.ocf" "Form/Code/Gen.ocf"
"Form/Code/Controllers.ocf" "Form/Code/Cmds.ocf"
"Form/Rsrc/Strings.odc" "Form/Rsrc/Menus.odc" "Form/Rsrc/Gen.odc"
"Form/Rsrc/Cmds2.odc" "Form/Rsrc/Cmds.odc"


bbpacked уже лежит в корневой директории BB.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 21:03 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Первый раз увидел как завис BlackBox :) Получается так: для упаковки списка файлов, надо вызвать
"DevPacker.ListFromSub('Имя директории')", которая и вызовет команду упаковки для всех файлов директории, тогда все работает. Если попытаться скопировать сгенерированную команду и вставить ее в новый документ, - все виснет на этапе сортировки, хотя сгенерированный ListFromSub и "скопированный" документы ничем визуально не отличаются. Буду разбираться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 21:20 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я подозреваю (и даже уверен), что это из-за кодировок. Это единственная проблема в ББ! Дело в том, что текст, выглядящий в документах совершенно одинаково и лежащий рядом, может быть записан в разных кодировках!

Изначально ББ делался на ANSI, потом перевели на Юникод (тип CHAR = 16бит). Но - перевели совсем не полностью, т.к. в Европе проблема с кодировками остро не стоит. Все системные вызовы - не-юникод, а надо переводить на версии W. Над этим Горячев сейчас работает, но пока не доделано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 21:24 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Если поставить "черный треугольничек" (см. примеры в документации) в конце списка файлов для упаковки, тогда все работает :D Возникает вопрос: что есть "черный треугольничек"? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2005 21:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А! Это парное отображение к командиру. Завершает список его аргументов, если не используются кавычки. См. DevCommanders.

Тогда все встает на свои места!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 13:34 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Остается открытым вопрос: почему BB зависает, а не выдает сообщение об ошибке? Почему в некоторых случаях не требуется завершать список аргументов этим парным отображением командеру?
Например:
(commander)DevCompiler.CompileThis ObxViews1 ObxViews2 ObxViews3 -прекрасно работает.
И еще :) где в меню находится "Insert EndCommander"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 14:10 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
С последним вопросом разобрался. Вдруг кому пригодиться... В файле ../Dev/Rsrc/Menus.odc вставить следующую строку в секции " MENU "Tools" " :
"Insert EndCommander" "*Q" "DevCommanders.DepositEnd; StdCmds.PasteView" "StdCmds.PasteViewGuard"

(см. Info21olimp/Docu/Введение.odc)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ЧЕРНЫЙ ЯЩИК
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 18:00 

Зарегистрирован: Вторник, 22 Ноябрь, 2005 17:54
Сообщения: 3
Откуда: Kyrgyzstan/Osh
Здравствуйте Дорогие Друзья!!!
У меня такая проблема: не как не могу программу сохранить как ".exe" - файл кто знает помогите пожалуйста...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЧЕРНЫЙ ЯЩИК
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 18:32 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Марат писал(а):
Здравствуйте Дорогие Друзья!!!
У меня такая проблема: не как не могу программу сохранить как ".exe" - файл кто знает помогите пожалуйста...


Здравствуй!
Решение твоей проблемы содержиться в описании DevLinker


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 18:41 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 12:00
Сообщения: 79
Откуда: Россия, Санкт-Петербург
Ответ Марату мой :) (забыл войти в форум)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ЧЕРНЫЙ ЯЩИК
СообщениеДобавлено: Вторник, 22 Ноябрь, 2005 21:07 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Марат писал(а):
Здравствуйте Дорогие Друзья!!!
У меня такая проблема: не как не могу программу сохранить как ".exe" - файл кто знает помогите пожалуйста...


Здравствуйте!
Рад видеть, что наш форум растет! :-)

В каком смысле "сохранить как exe-файл"?
С помощью DevLinker? Тогда опишите поконкретнее, что именно требуется...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ЧЕРНЫЙ ЯЩИК
СообщениеДобавлено: Среда, 23 Ноябрь, 2005 19:52 

Зарегистрирован: Вторник, 22 Ноябрь, 2005 17:54
Сообщения: 3
Откуда: Kyrgyzstan/Osh
Илья Ермаков писал(а):
Марат писал(а):
Здравствуйте Дорогие Друзья!!!
У меня такая проблема: не как не могу программу сохранить как ".exe" - файл кто знает помогите пожалуйста...


Здравствуйте!
Рад видеть, что наш форум растет! :-)

В каком смысле "сохранить как exe-файл"?
С помощью DevLinker? Тогда опишите поконкретнее, что именно требуется...


Ну как сказать))) "например: я писал программу " калькулятор " - и я хочу чтоб это программа (калькулятор) открылось без с помощью Black box (a), а как "ехе" файл" :shock: :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 23 Ноябрь, 2005 22:05 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вообще-то, в BlackBox существует несколько способов создать конечное приложение:

1) Скопировать файл BlackBox.exe, переименовав его во что-то свое. Скопировать те файлы, которые нужны для работы вашего приложения. (Какие? см. выше, но там список с некоторым запасом. У подсистемы Dev особый статус. Когда ББ был коммерческим, ее распространять запррещалось. Сейчас - GNU, но все же... Если ваше приложение использует Dev, то это квалифицируется как наибольшая зависимость его от среды, со всеми вытекающими...) Подправить файл System/Rsrc/Menus, дабы меню были свои. Затем подправить модуль System/Mod/Config, в котором определена единственная процедура Setup - она вызывается при запуске. Оттуда можно убрать команду открытия окна Лога и привесить что-то свое. Чтобы выполнить что-то до запуска графического интерфейса, надо создать аналогичный модуль Startup. Ну, там ,например, можно изменить название главного окна приложения (чтобы оно отличалось от имени exe): Dialog.appName := "My Advanced Application". С русским названием следует быть осторожным - у нас возникли проблемы с сохранением настроек (HostRegistry использует для этого ветку как раз с именем oberon/appName). Но это мелочи, если понадобиться, можно русифицировать, не такое исправляли :-)
Приложение так и остается в виде множества модулей. Преимущества? Для большого пакета - легкость обновления и расширений, что, собственно, и является коньком Оберонов. Что делать, если не хочется такой "лапши"?
2) Все то же самое, но отобранные кодовые файлы компонуются в EXE. То есть, вся среда BB пересобирается под нужды вашего приложения. См. документацию DevLinker. Проще пареной репы. Я лично не сторонник статической компоновки всех модулей, но использую Linker для пересборки exe-шника с другими значками.
В этом случае все ресурсные файлы остаются лежать открыто.
3) В дополнение ко всему предыдущему - упаковать часть или все файлы (это могут быть и кодовые, и ресурсы) в exe-шник DevPacker-ом, создав в нем виртуальную файловую систему. В полном смысле этого слова. Возможны интересные фишки, когда в exe-шник зашиваются файлы по адресу, например, Z:\myfile, и они будут доступны под этим адресом из программы, даже если на машине такого диска нет вообще. То есть, файлы виртуальной системы перекрывают собой реальные, а если в ВФС файл не найден, то потом уже он ищется в реальной ФС. КОдовые файлы, в отличие от скомпонованных статически, будут все равно подгружаться динамически, но уже из ВФС (имхо, применение этому найти трудно).

Если ваша программа использует GUI, то нужно нести (открыто ли, линкованно ли, пакованно ли) Form, если используете тексты, то Text, и т.п. И интерфейс будет работать в MDI-варианте.

Совершенно другой вариант: отвязаться от всех или части стандартных подсистем ББ и написать именно то, что нужно. Через WinAPI, например. Ядро можно пересобрать как угодно! Можно сделать классический экзешник для безоконного (или оконного, зашив туда вызовы к WinAPI и цикл сообщений) приложения очень маленького размера. Можно собрать exe только из своих файлов, не включая даже Kernel! Тогда не будет работать сборка мусора, динамическое выделение памяти, динамический контроль типов и т.п., но для небольших сверхбыстрых приложений это может оказаться тем, что надо. Память все равно можно выделять через вызовы к ОС и небезопасные указатели SYSTEM.ADDR.

И это еще не все... Где искать информацию? Начать с Руководства пользователя-Подсистема Dev. Далее - DevLinker и DevPacker. И, на закуску, Особенности платформы (Platform-Specific Issues).

Но легко сделать не-MDI интерфейс сейчас нельзя. У нас есть задумка сделать вариант подсистемы Host (эта, так сказать, OS Abstraction Layer в BlackBox), которая создает не MDI, а свободные окна, по типу Дельфы. Это, имхо, не очень сложно. (Создание главного окна и цикл сообщений там стоит в HostMenus)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: хе-хе
СообщениеДобавлено: Пятница, 25 Ноябрь, 2005 18:29 

Зарегистрирован: Вторник, 22 Ноябрь, 2005 17:54
Сообщения: 3
Откуда: Kyrgyzstan/Osh
Вячеслав Бойко писал(а):
Ответ Марату мой :) (забыл войти в форум)
аха каждый раз забываю... :D :lol: :mrgreen:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

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


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

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


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

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