powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ряд вопросов по Каше
30 сообщений из 30, показаны все 2 страниц
ряд вопросов по Каше
    #35044274
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
знает ли кно-нибудь:
1. можно ли как-нибудь программно добавить в Кашовый объект поле, кроме как через переписывание существующего класса?
2. можно ли запихать в Кашовый объект дерево неизвестной глубины целиком, например посредством "merge"? или придётся писать на каждый уровень вложенности новый подчинённый класс? Т.е. не реализован ли тип данных типа (извините за товтологию) %Tree?
3. возможна ли в Каше реализация разного рода java-понтов типа падающих меню и, если да, то как именно?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35045583
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я чего то не понял, но
1.Ээ?
2.Незачем пихать сразу дерево неизвестной глубины. Можно сделать поле класса, причем того же самого типа или другого, при желании можно его сделать хранимым внутри класса, но великого смысла пока тоже не вижу.
3.В каше возможно многое, в том числе и генерация javascript, (если вы его конечно знаете). Это ничем не отличается от генерации HTML.

По третьему пункту вам наверняка еще добавят знатоки ZEN.
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35045600
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 1. можно ли как-нибудь программно добавить в Кашовый объект поле, кроме
> как через переписывание существующего класса?
Тут уже было обсуждение на эту тему. Делается через классы %Dictionary.*, однако
так поступать не рекомендуется по многим причинам, их тоже называли - поищите по
форуму.

> 2. можно ли запихать в Кашовый объект дерево неизвестной глубины
> целиком, например посредством "merge"? или придётся писать на каждый
> уровень вложенности новый подчинённый класс? Т.е. не реализован ли тип
> данных типа (извините за товтологию) %Tree?
Любому полю можно сделать модификатор [MultiDimensional]. Однако следует учесть,
что такие поля не попадают в SQL, и хранение для них придется писать отдельно.

> 3. возможна ли в Каше реализация разного рода java-понтов типа падающих
> меню и, если да, то как именно?
Можно написать клиента на Java.

Любви.
logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35052925
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
Тут уже было обсуждение на эту тему. Делается через классы %Dictionary.*, однако
так поступать не рекомендуется по многим причинам, их тоже называли - поищите по
форуму.

что-то не нашел, не будет сцылочки, извините за наглость?

logist
Любому полю можно сделать модификатор [MultiDimensional]. Однако следует учесть,
что такие поля не попадают в SQL, и хранение для них придется писать отдельно.

огромное спасибо

logist
> 3. возможна ли в Каше реализация разного рода java-понтов типа падающих
> меню и, если да, то как именно?
Можно написать клиента на Java.

видимо, некорректно задал вопрос. Нужен не клиент на Java, а примерно следующее: есть интернет страничка, в ней кнопочка-сцылочка, наводишь на нее мышку, падает менюшка с другими сцылочками. Куда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35053218
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaКуда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки?
Не знаю как в ZEN, может там есть готовые "компоненты", но для CSP все сведется к "коду" html и javaskript... Но писать его можно на COS.
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35053288
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Не знаю как в ZEN, может там есть готовые "компоненты", но для CSP все сведется к "коду" html и javaskript... Но писать его можно на COS.
А где в самой страничке это должно располагаться и как должно выглядеть?
Это как метод должно быть оформлено?
Если на COS, то будет выглядеть как обращение к функции внутри метода? Что она должна формировать и в каком виде?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35054475
Сашок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ceshkaесть интернет страничка, в ней кнопочка-сцылочка, наводишь на нее мышку, падает менюшка с другими сцылочками. Куда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки?
Все описанное не относится к серверному программированию, так что Cache' здесь не причем.
1. Кнопка-ссылка, при наведении мыши на которую, Вы собираетесь отображать меню - это любой объект HTML, например, специально оформленный стилями div. Тогда у него будет атрибут onmouseover="showMenu()", вызывающий обработчик на javascript для указанного события.
2. Меню - скорее всего тоже div, который изначально не отображается (style="display: none"), но обработчик showMenu делает его видимым, изменяя стиль, например, mybutton.style.display=""
Содержимое этого div с необходимыми ссылками может быть отдано в контенте csp-страницы.
JavaScript в CSP оформляется как обычно в HTML в тегах <script language="Javascript" type="text/javascript"></script>
Скорее всего лучше применить готовые решения, например, изучив ZEN или, если Вы уже знакомы с CSP, обратите внимание на интеграцию с JavaScript-движком Dojo .
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35054718
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka , Сашок уже все объяснил...
Единственное, что могу добавить - это использование
Код: plaintext
<script language="cache" runat="server"></script>
или
Код: plaintext
<script language="cache" runat="compiler"></script>
для формирования html "кода" и "вытаскивания" данных из БД...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35059796
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде бы понятно. В таком случае актуальными остаются вопросы:
1. Как программно добавить поле в Кашовый объект
немного модифицированный вопрос 2 - как сохранить в базу объект, в который смёржилось дерево? Или лучше мёржить не в объект, а сразу в базу класса?
типа
m @( "^" _ $p( class , "@" , 2 ) _ "D" )@( class.%Id() , field ) = tree
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35059970
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka1. Как программно добавить поле в Кашовый объект
Мы испоьзуем %Dictionary.PropertyDefinition ...
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35060899
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Мы испоьзуем %Dictionary.PropertyDefinition ...

А можно поподробней, там всё, что-то похожее на добавление поля типа [ Private ]?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35061296
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 2 - как сохранить в базу объект, в
> который смёржилось дерево? Или лучше мёржить не в объект, а сразу в базу
> класса?
> типа
> m @( "^" _ $p( class , "@" , 2 ) _ "D" )@( class.%Id() , field ) = tree
Если дерево предполагается достаточно большое, лучше его вообще не мержить в
локальную память, а работать напрямую с глобалью, а в классе хранить ссылку на
глобаль и использовать через косвянку, например @..At@(idx1,idx2)

Недостаток такого метода - необходимо сохранять объект перед использованием
свойства с деревом (т.к. в большинстве случаев одним из узлов глобали будет Id
объекта)

Если дерево небольшое, можно его использовать в свойстве [MultiDimensional],
соответственно в класс добавить методы %OnOpen, %OnAfterSave и %OnAfterDelete,
которые соответственно будут загружать, сохранять и удалять дерево, желательно в
отдельную глобаль (не в object.NameD, а например object.NameG)

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35061432
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaА можно поподробней?
Так вроде уже некуда...
- Создаеш новый экземпляр класса
- Заполняеш нужные свойства, нужными значениями
- Делаеш ссылку на класс
Вот вроде и все...
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35063457
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё равно туго понимаю
krvsa
- Создаеш новый экземпляр класса

класса %Dictionary.PropertyDefinition надеюсь?
т.е.
s newclass=##class(%Dictionary.PropertyDefinition).%New("MyApp.MyClass||NEWPROPERTY")
?

krvsa
- Заполняеш нужные свойства, нужными значениями


только то, что нужно, только это?
s newclass.Type="%String"
а далее
d newclass.%Save()
и всё?

krvsa
- Делаеш ссылку на класс

это не понятно как...
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35063635
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35063744
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял ошибку, Insert не произведен был

servit Class Definition Classes

у них кроме самой каши еще и мануал кривой? круто!
насколько понимаю, там должно быть
if ##class(%SYSTEM.Status).IsError(cdef)?

всё равно после создания нового экземпляра при попытке присвоить только что созданному полю значение пишет <PROPERTY DOES NOT EXIST>
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35063794
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта ошибка в документации исправлена в новых версиях.

Высылаю новую ссылку:
Class Definition Classes

У меня пример из документации отработал правильно.
Если Ваш пример все равно выдает ошибку, тогда надо смотреть Ваш код.
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35064174
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

> всё равно после создания нового экземпляра при попытке присвоить только
> что созданному полю значение пишет <PROPERTY DOES NOT EXIST>
Нужно перекомпилировать класс и переоткрыть уже открытые объекты

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35064360
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka , вот пример нашего кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE(Class,NamSv,Nam) ; Создание свойства
 ; Class - объект класса
 ; NamSv - идентификатор свойства
 ; Nam   - имя класса
 n err,pr,val,i
 s pr=##class(%Dictionary.PropertyDefinition).%New()
 I NamSv["_" s NamSv=$tr(NamSv,"_","o")
 s pr.Name=NamSv
 s pr.Type=$$GetTyp(NamSv)
 s err=pr.Type
 s pr.parent=Class
 i pr.%Close()
 s i=##class(%Dictionary.IndexDefinition).%New()
 s i.Name=NamSv_"Index"
 s i.parent=Class
 s i.Properties=NamSv
 q
GetTyp(NamSv) ; Тип поля
 n val,def
 s def="%String"
 s val=$G(@buffld@(NamSv,"TYPSQL"))
 s val=$$At^zfunc(val)
 q:val="" def
 s val=$$Code^ASYS("D_TYPSQL",val)
 q:val="" def
 q val
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35065051
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close() , видимо, родитель ему мешается, а как без него? Вот сам класс, ничего необычного:
Код: plaintext
1.
2.
3.
4.
5.
6.
Class MyApp.MyClass Extends (%Persistent, %Populate) [ ClassType = persistent ]
{

Property PROPERTY As %String;

}
вот так хотел вызвать:
Код: plaintext
1.
2.
3.
4.
5.
6.
       n Class
	s Class=##class(MyApp.MyClass).%New()
	d CREATE(Class,"Name","MyApp.MyClass")
	s Class.Name="asf"
	d Class.%Close()
	q
и еще вопрос, при успешном выполнении данной программы, это поле будет только в данном объекте или во вновь создаваемых тоже?

отвлеченный вопрос: переменная err зачем?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35065343
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close() , видимо, родитель ему мешается, а как без него? Вот сам класс, ничего необычного:
Код: plaintext
1.
2.
3.
4.
5.
6.
Class MyApp.MyClass Extends (%Persistent, %Populate) [ ClassType = persistent ]
{

Property PROPERTY As %String;

}
вот так хотел вызвать:
Код: plaintext
1.
2.
3.
4.
5.
6.
       n Class
	s Class=##class(MyApp.MyClass).%New()
	d CREATE(Class,"Name","MyApp.MyClass")
	s Class.Name="asf"
	d Class.%Close()
	q
и еще вопрос, при успешном выполнении данной программы, это поле будет только в данном объекте или во вновь создаваемых тоже?

отвлеченный вопрос: переменная err зачем?

Вы меняете метаописание класса и его отображения в SQL - соотвественно появится поле в во всех сохраненые объекты, и открытыл ПОСЛЕ изменения структуры класса объекты ....

В приведоном коде смысла как то не наблюдается .... открыл объект добавил поле в ОПИСАНИЕ и что дальше то ? IMXO легче задачу решить через строковый Массив

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Class MyApp.MyClass Extends (%Persistent, %Populate) [ ClassType = persistent ]
{
 Property RowDate As %String [ Collection = array ];
}
 
 n Class
 s Class=##class(MyApp.MyClass).%New()
 d Class.RowData.SetAt('Name',"asf")
 d Class.%Close()
 q
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35065567
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn , т.е. в чём прикол тогда передавать в данную процедуру экземпляр? и почему <METHOD DOES NOT EXIST>?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35065938
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshka krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close()
Вот поэтому-то я и не хотел сначала этот код выкладывать Поскольку внашем варианте и создание класса выполняет некая функция... Но таки выложил в качестве иллюстрации.
Суть там такая:
- Создается новый класс
- Потом сосздаются новые свойства и ссылаются на этот класс
- Все это сохраняется
Класс с новыми свойствами готов! Все остальное подробно описал Ptn ...
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35065962
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодировка у нас правда DOSовская...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
ChSQL(Kill,Rep)                         ; à®¢¥àª  SQL
 n obl,nc,nam,sqlstr,rez
 s Kill=$G(Kill)
 s Rep=$G(Rep, 1 )
 D SETNODEL
 D KILL(obl)
 s nc=$$Create(obl)
 s nam=""
 D PREFLD
 f  s nam=$O(@buffld@(nam)) q:nam=""  D CREATE(nc,nam,obl)
 D %SAVE(nc)
 D %COMPILE(obl)
 S sqlstr=$$GetSql(obl)
 i nc.%Close()
 s rez=$$ValidSql(sqlstr)
 D:Kill KILL(obl)
 I rez= 1  D TXT^ASYS("‡ ¯à®á á®áâ ¢«¥­ ¢¥à­®") q  1 
 D ERROR
 D:Rep REPAINT
 q  0 
ERROR
 n txt,len
 s txt( 1 )="‡ ¯à®á á®áâ ¢«¥­ ­¥¢¥à­®!"
 i $L(rez)< 60  s txt( 2 )=rez I $$Menu^ASYS1(,, 0 ) q
 s len=$L(rez)\ 60 + 0 . 5 
 S len=$FN(len,"", 0 )
 f i= 1 : 1 :len s txt(i+ 1 )=$E(rez,(i- 1 )* 60 + 1 ,(i- 1 )* 60 + 60 )
 I $$Menu^ASYS1(,, 0 )
 q 
GetSql(Class)                          ; ®¤£®â®¢¨âì Sql
 n str,rez
 D TXT^ASYS("®¤£®â®¢ª  SQL § ¯à®á ")
 s rez=""
 s str=""
 f  s str=$O(@sql@(str)) q:str=""  D NEXTSTR
 q rez
NEXTSTR                                ; Žç¥à¥¤­ ï áâப 
 n val,s
 s s=$G(@sql@(str))
 s val=$$Trans^zfunc(s,"TABLE",Class)
 s val=$$Trans^zfunc(val,"""","""""")
 S rez=rez_val_" "
 q 
KILL(Class)                            ; “¤ «¥­¨¥ ª« áá 
 N err,gl
 k err 
 D TXT^ASYS("“¤ «¥­¨¥ ª« áá ")
 I ##class(%Dictionary.ClassDefinition).%ExistsId(Class) D ##class(%Dictionary.ClassDefinition).%DeleteId(Class)
 ;i $System.OBJ.Delete(Class,"cf-d",.err)
 s gl="^"_Class_"D"
 k @gl
 s gl="^"_Class_"I"
 k @gl
 q 
Create(Nam)                            ; ‘®§¤ ­¨¥ ª« áá 
 n nc
 D TXT^ASYS("‘®§¤ ­¨¥ ª« áá ")
 s nc=##class(%Dictionary.ClassDefinition).%New()
 s nc.Name=Nam
 s nc.ProcedureBlock= 1 
 s nc.ClassType="persistent"
 s nc.Super="%Persistent"
 q nc
CREATE(Class,NamSv,Nam)                ; ‘®§¤ ­¨¥ ᢮©á⢠
 ; Class - ®¡ê¥ªâ ª« áá 
 ; NamSv -  ¨¬¥­®¢ ­¨¥ ᢮©á⢠
 ; Nam   - ¨¬ï ª« áá 
 n err,pr,val,i
 s pr=##class(%Dictionary.PropertyDefinition).%New()
 I NamSv["_" s NamSv=$$Trans^zfunc(NamSv,"_","o")
 s pr.Name=NamSv
 s pr.Type=$$GetTyp(NamSv)
 s err=pr.Type
 s pr.parent=Class
 i pr.%Close()
 s i=##class(%Dictionary.IndexDefinition).%New()
 s i.Name=NamSv_"Index"
 s i.parent=Class
 s i.Properties=NamSv
 D TXT^ASYS("„®¡ ¢«¥­¨¥ ᢮©á⢠ "_NamSv)
 q
GetTyp(NamSv)                          ; ‚¥à­¥â ⨯ ¯®«ï
 n val,def
 s def="%String"
 s val=$G(@buffld@(NamSv,"TYPSQL"))
 s val=$$At^zfunc(val)
 q:val="" def
 s val=$$Code^ASYS("D_TYPSQL",val)
 q:val="" def
 q val
%SAVE(Class)                           ; ‘®åà ­¥­¨¥ ª« áá 
 n val
 s val=Class.%Save()
 q
%COMPILE(Nam)                          ; Š®¬¯¨«ïæ¨ï ª« áá 
 n err
 k err 
 D TXT^ASYS("Š®¬¯¨«ïæ¨ï ª« áá ")
 i $system.OBJ.Compile(Nam,"cf-d",.err)
 q  
ValidSql(Sql)                          ; à ¢¨«ì­ë© «¨ Sql
 n o,rez
 D TXT^ASYS("à®¢¥àª  ᨭ⠪á¨á  SQL § ¯à®á ")
 S o=##class(%ResultSet).%New("%DynamicQuery:SQL")
 s rez=o.Prepare(Sql)
 q rez
REPAINT                                ; ¥à¥à¨á®¢ âì íªà ­
 D SCR
 D VIEWFLD( 1 )
 D VIEWSLV( 1 )
 D TXT^ASYS("")
 q
Может как идею возьмете...

Мопэд не мой... Я просто разместил объяву. (с)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35066207
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господи Иисусе, krvsa , работает!!! Честно скажу, слабо верилось. Тогда вопрос на засыпку: а через что-нить типа кашового
Код: plaintext
1.
2.
3.
4.
5.
%Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
    Set $zobjval(, 1 , 0 , 3 , 1 )=$zu( 115 , 10 ),
    $zobjval(, 2 , 0 , 3 , 2 )= 0 ,
    $zobjval(, 3 , 0 , 3 , 3 )=""
    Quit  1 
такое провернуть можно?
Типа s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)=""
что-нибудь бывает без лишних заморочек?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35067001
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понял, что Вы пытаетесь добиться. Если присвоить значение
произвольному полю объекта, используйте функцию $zobjproperty. $zobjval даже
сама Интерсистемс не использует.

set propName="MyProperty"
set Obj=##class(pkg.Class).%New()
set $zobjproperty(Obj,propName)="value"
; equivalent to set Obj.MyProperty="value"

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35067175
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaработает!!! Честно скажу, слабо верилось.
Так этому коду уже несколько лет! Чего бы ему не работать-то
ceshkaТогда вопрос на засыпку: а через что-нить типа кашового
Код: plaintext
1.
2.
3.
4.
%Construct(%this,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
    Set $zobjval(, 1 , 0 , 3 , 1 )=$zu( 115 , 10 ),
    $zobjval(, 2 , 0 , 3 , 2 )= 0 ,
    $zobjval(, 3 , 0 , 3 , 3 )=""
    Quit  1 
такое провернуть можно?
Типа s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)=""
что-нибудь бывает без лишних заморочек?
А тут я вообще не понял что нужно делать...
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35067556
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
$zobjval даже
сама Интерсистемс не использует.
давно?

на Каше 5.0.21 при компиляции класса генерится рутина MyApp.MyClass.1.int
в ней есть метка %Construct, при создании нового экземпляра она исполняется следующим образом:
Set $zobjval(,1,0,3,1)=$zu(115,10),
а далее последовательно по количеству полей в новом объекте:
$zobjval(,номер следующего поля,0,3,номер следующего поля)=$s(если определено значение по умолчанию, то оно, а иначе ""),

на Каше 2007.1 то же самое только с небольшим отличием:
$zobjval(,/*имя поля или отношения*/номер следующего поля,0,3,номер следующего поля)=$s(если определено значение по умолчанию, то оно, а иначе ""),

Т.е. если объект уже инициализирован, Кашовый %Construct уже пройден, делаем
s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)=""
и в объекте новое поле... Это возможно?
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35070164
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*.int код для Ваших классов пишет не Интерсистемс, а компилятор классов. Это -
неоправданно низкий (в смысле абстракции) уровень программирования, навроде
использования ассемблера в коде на C++

> на Каше 2007.1 то же самое только с небольшим отличием:
А на Каше 4? А на Каше 2008?

> Т.е. если объект уже инициализирован, Кашовый %Construct уже пройден,
> делаем
> s $zobjval(,/*имя нового поля*/количество полей и
> отношений+1,0,3,количество полей и отношений+1)=""
> и в объекте новое поле... Это возможно?
А хрен его знает. Будет ли работать в новых версиях - тем более неизвестно.

При сохранении такого объекта почти наверняка вылетит ошибка <CLASS RECOMPILED>

Вообще говоря, Каше почти никаких ограничений на программиста не накладывает;
хочется - делайте.

Если нужно часто и помногу добавлять поля, лучше делайте массив или отношение
многие-ко-многим.

Любви.
logist (Сергей Шутов)
ООО Димас, ХАбаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ряд вопросов по Каше
    #35071619
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist
А на Каше 4? А на Каше 2008?


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


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