powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Можно ли заполнить параметр класса во время компиляции?
10 сообщений из 10, страница 1 из 1
Можно ли заполнить параметр класса во время компиляции?
    #36990528
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или в рантайме его изменить? Интересует параметр RESOURCE у zen-страничек. Есть мысль указывать в качестве ресурса страницы имя ее класса - чтобы не возиться и руками не прописывать.
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #36991081
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значение параметра класса, нужно до начала компиляции, потому как в скомпилированный код вставляется только само значение
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #36991751
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolesovИли в рантайме его изменить? Интересует параметр RESOURCE у zen-страничек. Есть мысль указывать в качестве ресурса страницы имя ее класса - чтобы не возиться и руками не прописывать.
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ClassMethod BeforeCompile() [ CodeMode = generator, ServerOnly ]
{
	s obj = ##class(%Dictionary.ClassDefinition).%OpenId(%class)
	s fChanged =  0 
	for i= 1 : 1 :obj.Parameters.Count()
	{
		if (obj.Parameters.GetAt(i).Name = "RESOURCE") && (obj.Parameters.GetAt(i).Default '= %class)
		{
			s obj.Parameters.GetAt(i).Default = %class
			s fChanged =  1 
			q
		}
	}
	if (fChanged)
	{
		s obj.Modified =  1 
		s sc = obj.%Save()
	}
	k obj
}
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #36992408
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Turk,

Спасибо. Отлично работает (добавил только создание ресурса в случае, если он изначально отсутствует, но это рюшечки ;)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно ли заполнить параметр класса во время компиляции?
    #38620785
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс.
Перестало это работать. Думаю с обновлением версии до 2014.1
Не можете подсказать, в чем проблема может быть?
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #38620788
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovУпс.
Перестало это работать. Думаю с обновлением версии до 2014.1
Не можете подсказать, в чем проблема может быть?Может что-то в вашем коде не так

приведу пример моего кода, который нормально работает на 2014.1
меняет TIMESTAMP, если он не соответствует формату, ставя время компиляцииClassMethod OnCompile() [ CodeMode = generator, Internal, ServerOnly = 1 ]
{
  s tSC=$$$OK
  
  s pvalue=$$$comMemberKeyGet(%class,$$$cCLASSparameter,"TIMESTAMP",$$$cPARAMdefault)
  i (pvalue'?14N) {
    $$$defMemberKeySet(%class,$$$cCLASSparameter,"TIMESTAMP",$$$cPARAMdefault,$tr($zdt($h,8,1)," :-/",""))
    s updateClass=##class("%Dictionary.ClassDefinition").%OpenId(%class)
    s updateClass.Modified=0
    d updateClass.%Save()
    d updateClass.%Close()
   }

  quit tSC
}
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #38620790
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сори. Перемудрил на ночь(
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #38620803
Александр Коблов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,

В 2014.1 вот так ещё можно (может и раньше можно было):Class Test.ParamComp Extends %RegisteredObject
{

Parameter Val = {$H};

}
http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls?KEY=GCNV_R2014_1#GCNV_C135859

Код: plaintext
1.
USER>w ##class(Test.ParamComp).#Val
63298,68827

По-другому — можно вычислять значение в Runtime -- COSEXPRESSION:
http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_classes#GOBJ_classes_parametersGOBJ_classes_parametersexpressions
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #38621096
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov ,
Class my.c Extends %RegisteredObject
{

Parameter v As CLASSNAME = {%class};

}
Код: plaintext
1.
USER>w ##class(my.c).#v
my.c
...
Рейтинг: 0 / 0
Можно ли заполнить параметр класса во время компиляции?
    #38623635
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

Спасибо. Попробую.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Можно ли заполнить параметр класса во время компиляции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]