Страница 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(). Решил выводить в лог и то и то.
Всё получилось.