OberonCore
https://forum.oberoncore.ru/

Запуск приложения без открытия окна BlackBox
https://forum.oberoncore.ru/viewtopic.php?f=81&t=559
Страница 1 из 1

Автор:  alobo [ Вторник, 10 Июль, 2007 13:18 ]
Заголовок сообщения:  Запуск приложения без открытия окна BlackBox

Уважаемые гуру!

Сваял свою первую программу, состоит из расчетного модуля и формы для ввода исходных данных.
Запускаю:
File=>Open=>InputForm
Открывается форма в режиме разметки. Затем:
Controls=>Open as Tool Dialog
Все работает, то есть форма сама вызывает расчетный модуль, и в ней же выводится результат расчета. Теперь стоит задача создать exe-файл. Но вначале пытаюсь запустить программу без открытия лога и главного окна в своей среде.

По рекомендации одного из участников форума правлю Config:

комментирую строку с StdDialog.Open

вставляю строку:

StdDialog.Open(GeoInputForm.New(), "Расчет азимута", NIL, "", NIL, TRUE, FALSE, TRUE, FALSE, TRUE);
При компиляции получаю ошибку:
InputForm undeclared identifier

Если в Импорте прописать GeoInputForm,
то ошибка уже такая:
symbol file or imported module not found

Оно и понятно - форма не компилируется, нет ни символьного файла ни бинарника.

Вопрос: как можно прописать старт программы со входной формы без вызова главного окна? В документации не нашел...

Автор:  Иван Горячев [ Вторник, 10 Июль, 2007 14:07 ]
Заголовок сообщения: 

Чтобы программно открывать диалоги существует процедура StdCmds.OpenToolDialog. Вообще в модуле StdCmds есть достаточно полезные процедуры.

Что касается главного окна - полноценного SDI в Блэкбоксе нет. Приходится крутиться :(

Автор:  Trurl [ Вторник, 10 Июль, 2007 14:38 ]
Заголовок сообщения: 

Что-то я не понимаю:
StdDialog.Open(GeoInputForm.New(), "Расчет азимута", NIL, "", NIL, TRUE, FALSE, TRUE, FALSE, TRUE);
GeoInputForm.New() - это вызов процедуры из модуля GeoInputForm? Судя по тому, что написано дальше -нет. Подразумевается открытие документа с формой (а New() просто придумано). Значит и нужно указать имя документа. Скорее всего это "Geo/Rsrc/InputForm".

Автор:  Trurl [ Вторник, 10 Июль, 2007 14:44 ]
Заголовок сообщения: 

Чтобы не было главного окна, запускать с флагом /NOAPPWIN.

Автор:  alobo [ Вторник, 10 Июль, 2007 14:54 ]
Заголовок сообщения: 

Trurl писал(а):
Что-то я не понимаю:


Это я не понимаю...


Trurl писал(а):
Подразумевается открытие документа с формой (а New() просто придумано). Значит и нужно указать имя документа. Скорее всего это "Geo/Rsrc/InputForm".


Так и есть. Но я начинал с имени документа, а New добавил уже от безысходности и тоже без результата...

Надо попробовать по совету Ivor StdCmds.OpenToolDialog...

Автор:  Trurl [ Вторник, 10 Июль, 2007 15:14 ]
Заголовок сообщения: 

alobo писал(а):
Так и есть. Но я начинал с имени документа, а New добавил уже от безысходности и тоже без результата...

Так имя же надо в кавычки брать.

Цитата:
Надо попробовать по совету Ivor StdCmds.OpenToolDialog...

Там тоже надо имя указывать. ;)

Автор:  alobo [ Вторник, 10 Июль, 2007 15:42 ]
Заголовок сообщения: 

Trurl писал(а):
Так имя же надо в кавычки брать.


Там тоже надо имя указывать. ;)


Семён Семеныч! Ну конечно, моя ошибка!

Поправил, конфиг скомпилился, но все равно криво получается.

Запускаю ББ командой

BlackBox /USE c:\varia\programming\Geo - ничего не происходит (у меня там копии всех модулей ББ). Создаю вложенную папочку Geo, переношу туда свои модули, ввожу
BlackBox /USE c:\varia\programming\Geo\Geo

ББ запускается, компилирую свои модули и конфиг, создается еще одна папка:

c:\varia\programming\Geo\Geo\Geo\Code и конечно Sym

и вот так все работает....

Автор:  Info21 [ Вторник, 10 Июль, 2007 17:46 ]
Заголовок сообщения: 

alobo писал(а):
Запускаю ББ командой

BlackBox /USE c:\varia\programming\Geo - ничего не происходит (у меня там копии всех модулей ББ


Надо в ярлыке еще в поле Start in прописать c:\varia\programming\Geo

Что-то все на эти грабли наступают.
Вроде, образец ярлыка был дан....

Или речь не о том?

Автор:  alobo [ Среда, 11 Июль, 2007 06:55 ]
Заголовок сообщения: 

info21 писал(а):
Надо в ярлыке еще в поле Start in прописать c:\varia\programming\Geo



Так я еще до ярлыка не дошел - запускаю из командной строки. При запуске из ярлыка ББ не находит моего конфига - тот лежит в Geo\Geo\Code. А если скомпилировать конфиг еще раз, он создает .ocf файл в основном директории c:\Program Files\BlackBox.... 1.5\System\Code, а мне хотелось сохранить вармант основных настроек....

Автор:  alobo [ Среда, 11 Июль, 2007 07:30 ]
Заголовок сообщения:  Запуск приложения без открытия окна BlackBox

Чудеса, да и только!

Скопировал Config.ocf из Geo\Geo\Code в Geo\System\Code, теперь при запуске строкой

BlackBox /USE c:\varia\programming\Geo

запускается приложение, главное окно не открывается.

Если запустить так:

BlackBox /USE c:\varia\programming\Geo\Geo

приложение открывается в окне ББ в режиме Tool Dialog. А ведь конфиг один и тот же, только размещен в другом месте.

Если запустить из ярлыка, где Start in = c:\varia\programming\Geo открывается стандартное окно ББ и лог. То есть читается стандартный конфиг ББ и только при открытии файла предлагается директорий Geo, а не основной директорий ББ.

Автор:  Александр Ильин [ Среда, 11 Июль, 2007 07:51 ]
Заголовок сообщения: 

Если хочешь, чтобы тебе действительно помогли разобраться, приводи полную информацию. А то у тебя одни пути в сообщениях абсолютные, а другие - относительные. Относительно чего - не указываешь. Кроме того, не понятно, из какого каталога ты это все запускаешь командной строкой. Составь карту путей в одном сообщении - где что находится и откуда запускается, и сразу всё встанет на свои места. Иначе приходится гадать, где ты намудрил, а нечёткостью сообщений ты оставляешь слишком много вариантов.

Автор:  alobo [ Среда, 11 Июль, 2007 08:49 ]
Заголовок сообщения: 

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


Приношу извинения, еще не освоил все правила....

ББ стоит стандартно:

c:\Program Files\BlackBox Component Builder 1.5\

Все скопировано в папку

c:\varia\programming\Geo

В ней же создал свои файлы GeoCalc.odc GeoInputForm.odc

В результате компиляции возникли папки

c:\varia\programming\Geo\Geo\Code и
... ... ... ... ... .... ... ... ... \Sym

Уже руками создал папки Mod и Rsrc перенес туда свои файлы с переименованием в Calc.odc InputForm.odc.

запускаю ББ строкой

c:\Program Files\BlackBox Component Builder 1.5\BlackBox /USE c:\varia\programming\Geo\Geo

Здесь редактирую конфиг c:\varia\programming\Geo\System\Mod\Config.odc. Ввел строку

StdCmds.OpenToolDialog('Geo/Rsrc/InputForm', "Расчет азимута")

Компилирую конфиг - появляется файл Config.ocf в папке

c:\varia\programming\Geo\Geo\Code\

после этого компилирую свой файл c:\varia\programming\Geo\Geo\Mod\Calc.odc.
В результате компиляции создалась еще одна вложенная папка

c:\varia\programming\Geo\Geo\Geo\Code

После лихорадочных экспериментов скопировал Config.ocf в папку
c:\varia\programming\Geo\System\Code и получил такое поведение

Цитата:
при запуске строкой из директория c:\Program Files\BlackBox Component Builder 1.5\

BlackBox /USE c:\varia\programming\Geo

запускается приложение, главное окно не открывается.

Если запустить так:

BlackBox /USE c:\varia\programming\Geo\Geo

приложение открывается в окне ББ в режиме Tool Dialog.


А при запуске из ярлыка вообще открывается только стандартное окно ББ в любом случае...

Автор:  alobo [ Среда, 11 Июль, 2007 09:05 ]
Заголовок сообщения: 

Все - ярлык работает. Скопировал BlackBox.exe в c:\varia\programming\Geo и создал новый ярлык. Теперь запускается только мой GeoCalc без главного окна.

С командной строкой по-старому....

Автор:  Александр Ильин [ Среда, 11 Июль, 2007 09:14 ]
Заголовок сообщения: 

alobo писал(а):
Приношу извинения, еще не освоил все правила....

Ну, это так, общие соображения, касающиеся любой попытки разобраться в чем-либо. Особенно если привлекаешь посторонних к этому процессу : )

alobo писал(а):
Все скопировано в папку
c:\varia\programming\Geo
...
запускаю ББ строкой
c:\Program Files\BlackBox Component Builder 1.5\BlackBox /USE c:\varia\programming\Geo\Geo

Вот и ошибка стала видна: после /use нужно указывать тот же каталог, в который "всё скопировано".

Например:
- пусть BlackBox установлен в C:\BlackBox
- разрабатываемое тобой приложение с подсистемами и ресурсами находится в D:\Geo

Тогда твоя подсистема должна находиться в каталогах
D:\Geo\Geo\Mod - исходники (в твоем случае Calc.odc, а не GeoCalc.odc)
D:\Geo\Geo\Code - скомпилированные модули
D:\Geo\Geo\Sym - интерфейсы модулей
D:\Geo\Geo\Rsrc - ресурсы: меню (Menus.odc), строки (Strings.odc) и формы (InputForm.odc, а не GeoInputForm.odc)
D:\Geo\System\Mod\Config.odc - исходник конфигурации; при его компиляции будут созданы файлы
D:\Geo\Code\Config.ocf и
D:\Geo\Sym\Config.osf

Запускать это все нужно, находясь в каталоге D:\Geo командой C:\BlackBox\BlackBox.exe /use D:\Geo (а не D:\Geo\Geo).

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

Автор:  Александр Ильин [ Среда, 11 Июль, 2007 09:19 ]
Заголовок сообщения: 

alobo писал(а):
Все скопировано в папку
c:\varia\programming\Geo

Кстати, по поводу общего подхода. Обычно делают одно из двух: либо всё копируют и не заморачиваются с командными строками и ярлыками, либо делают ярлык на некое место, где размещают только файлы проекта, а не копию BlackBox. Иногда эти подходы комбинируются, тогда в проект копируется часть файлов BlackBox, но только та часть, которую требуется изменить для нужд конкретного проекта (например, модуль Config).

alobo писал(а):
Все - ярлык работает. Скопировал BlackBox.exe в c:\varia\programming\Geo и создал новый ярлык. Теперь запускается только мой GeoCalc без главного окна.

С командной строкой по-старому....

То есть, ты создал полную копию BlackBox плюс добавил свои файлы? Ну и плюнь ты тогда на эти /USE. : )

Автор:  alobo [ Среда, 11 Июль, 2007 09:25 ]
Заголовок сообщения: 

Александр Ильин - спасибо за обстоятельное объяснение. Постепенно начинаю осваивать логику среды.

К ошибке подталкивает windows: в командной строке при наборе c:\Program Files\... возникает ошибка, приходится cd c:\Program Fi....

Хотя можно было набрать путь в даблквотах....

Автор:  Александр Ильин [ Среда, 11 Июль, 2007 09:29 ]
Заголовок сообщения: 

alobo писал(а):
Александр Ильин - спасибо за обстоятельное объяснение. Постепенно начинаю осваивать логику среды.

Всегда пожалуйста! : )

alobo писал(а):
К ошибке подталкивает windows: в командной строке при наборе c:\Program Files\... возникает ошибка, приходится cd c:\Program Fi....

Хотя можно было набрать путь в даблквотах....

Да, двойные кавычки надо использовать.

Автор:  alobo [ Среда, 11 Июль, 2007 09:33 ]
Заголовок сообщения: 

Александр Ильин писал(а):
...
Обычно делают одно из двух: либо всё копируют и не заморачиваются с командными строками и ярлыками, либо делают ярлык на некое место,


Хотелось создать место для экспериментов, а основную среду оставить в неприкосновенности...
Цитата:
То есть, ты создал полную копию BlackBox плюс добавил свои файлы? Ну и плюнь ты тогда на эти /USE. : )

Уже плюнул :) Впереди более интересное - DevLinker....[/quote]

Автор:  Евгений Темиргалеев [ Среда, 11 Июль, 2007 10:00 ]
Заголовок сообщения: 

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

Для себя делаю так: есть отдельная папка (напр: E:\Blackbox), в которой лежат разные сборки ББ (русская/анлийская, 1.5/1.6 и т. п) (E:\Blackbox\En, E:\Blackbox\Ru и т. п). Чтобы писать команды без кавычек - имена папок без пробелов. :)

Где-то лежит рабочая папка (напр. E:\Work). Там и мои подсистемы, и подправленные файлы из стандартных подсистем. Сюда же я добавляю доп. подсистемы из CPC (напр, CpcBeautifier - удобная вещь).

Запуск - в рабочей папке лежит командный файл bb.cmd:
Код:
start e:\BlackBox\Ru\BlackBox.exe /use E:\Work

Запускаем его из рабочей папки, она является текущей и все ок. Т. о. можно быстро подменить базовую сборку, либо сменить рабочую папку. Мне как-то привычнее править в текстовом редакторе, нежели в свойствах ярлыка...

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

Автор:  alobo [ Четверг, 12 Июль, 2007 07:56 ]
Заголовок сообщения: 

Евгений Темиргалеев - спасибо. И себе так сделал, очень удобно!

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/