powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ряд вопросов по Каше
5 сообщений из 30, страница 2 из 2
ряд вопросов по Каше
    #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
5 сообщений из 30, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ряд вопросов по Каше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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