Страница 1 из 1
Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 10:25
optron
Добрый день всем.
Clarion 5.5 EE ABC
Хочу сделать вывод в LOG - файл ошибок, возникших при выполнении программы, операций, выполняемых пользователями и т. д.
В связи с этим написал стандартную сплэш - процедуру, в которую параметрами передается всё то, что хочу залогить.
Так вот хотелось бы передавать еще и имя модуля, вызывающего процедуру. Можно, конечно, и ручками, но может есть стандартная переменная, в которой при выполнении модуля фиксируется его имя?
Заранее спасибо.
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 11:51
Дед Пахом
%Module
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 12:35
optron
Спасибо, Дед Пахом.
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 13:12
Admin
optron писал(а):Спасибо, Дед Пахом.
Вот тебе шаблончик:
Код: Выделить всё
#TEMPLATE(ModuleName,'Module Name template'), FAMILY('ABC'), FAMILY('Clarion')
#!=============================================================================
#EXTENSION(ModuleNameGlobal,'Add Module Name template')
#SHEET
#TAB('Tips')
#DISPLAY
#DISPLAY('Use varisable Module:Name')
#DISPLAY
#ENDTAB
#ENDSHEET
#!=============================================================================
#AT(%ModuleDataSection)
%[40]('Module:Name') EQUATE('%Module')
#ENDAT
#!=============================================================================
Он добавляет в каждый модуль программы такой
EQUATE
Module:Name EQUATE('
mobil001.clw')
Учти что в основной модуль ничего не добавляется т.к. он глобальный...
Если что подправишь шаблон, там все просто...
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 15:42
optron
Admin писал(а):
Вот тебе шаблончик:
Код: Выделить всё
#TEMPLATE(ModuleName,'Module Name template'), FAMILY('ABC'), FAMILY('Clarion')
#!=============================================================================
Он добавляет в каждый модуль программы такой [color=#0000BF]EQUATE[/color]
[color=#FF0000]Module:Name[/color] [color=#0000BF]EQUATE[/color]('[color=#008000]mobil001.clw[/color]')
Учти что в основной модуль ничего не добавляется т.к. он глобальный...
Если что подправишь шаблон, там все просто...[/quote]
Сделал вот что:
1. Сохранил означенный код в файле name.tpl
2. Зарегил шаблон.
3. Добавил в Global\Extention
Теперь всё прописывает. В каждом модуле есть глобальная переменная Module:Name. Могу к ней обратиться.
Не дают покоя следующие вопросы -
[quote]
Учти что в основной модуль ничего не добавляется т.к. он глобальный...
Если что подправишь шаблон, там все просто...[/quote]
1) Это в какой основной? (Name.clw)? Действительно не добавляет, да и не нужно ...
2) Пишется имя файла (Name007.clw), а не имя модуля (Main). А можно, чтобы писалось имя модуля?
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 16:07
optron
Ну то есть желательно было бы автоматически получить имя вызвавшей его процедуры.
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 17:28
Yufil
Сразу после входа сохрани GlobalErrors.GetProcedureName () . Для всех ABC - процедур кроме Source выдаст наименование процедуры.
Re: Переменная имени модуля - есть?
Добавлено: 04 Июнь 2008, 23:34
Admin
optron писал(а):Ну то есть желательно было бы автоматически получить имя вызвавшей его процедуры.
Какой вопрос такой и ответ. Изначально говорилось о имени модуля

Re: Переменная имени модуля - есть?
Добавлено: 05 Июнь 2008, 9:51
optron
Спасибо всем. Воспользовался и темплейтом и GlobalErrors.GetProcedureName(). Решил выводить в лог и то и то.
Всё получилось.