Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ArrayOfDataTypes как Property / 18 сообщений из 18, страница 1 из 1
02.09.2009, 16:17
    #36175088
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
Есть некий класс, унаследованный от %ZEN.Component.composite

в нём объявлено свойство - массив
Код: plaintext
1.
Property GraphChartData1 As %Library.ArrayOfDataTypes;

есть кнопка, вызывающая метод
Код: plaintext
1.
2.
3.
4.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<button onclick="return zenThis.composite.Obtain();" caption="Проверка" />
}

При создании экземпляра класса массив заполняется 3-мя элементами. Алерт показывает 3. Всё ок.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Method %OnAfterCreateComposite() As %Status
{
	set ..GraphChartData1 = ##class(%Library.ArrayOfDataTypes).%New()
	do ..GraphChartData1.SetAt( 1 , 1 )
	do ..GraphChartData1.SetAt( 2 , 2 )
	do ..GraphChartData1.SetAt( 3 , 3 )
	&js<alert("#(..GraphChartData1.Count())#");>
	Quit $$$OK
}

При нажатии на кнопку должна показаться текущая размерность массива.
Код: plaintext
1.
2.
3.
4.
5.
Method ObtainPieLabel() As %ZEN.Datatype.string [ ZenMethod ]
{	
	&js<alert("#(..GraphChartData1.Count())#");>
	q ""
}

Однако, показывается 0. На каком этапе массив херится - понять не могу.
Как быть? Как добится сохранности массива?
...
Рейтинг: 0 / 0
02.09.2009, 16:37
    #36175133
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutni , экземпляр сохранен и закрыт?
...
Рейтинг: 0 / 0
02.09.2009, 16:38
    #36175139
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniКак добится сохранности массива?

Насколько я понимаю - сохранение возможно только в каком либо классе типа "Персистент"...
...
Рейтинг: 0 / 0
02.09.2009, 16:42
    #36175152
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
krvsa sutni , экземпляр сохранен и закрыт?

Зачем мне сохранять этот экземпляр?
Это просто некий компонент на странице, который делает некую работу. Промежуточные результаты работы хочется сохранять в массиве. Но только на время пока страница открыта. Ничего сохранять в базе мне не нужно.
...
Рейтинг: 0 / 0
02.09.2009, 16:51
    #36175175
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutni , если данные не сохранены и объект не закрыт вы можете в любой момент "потерять" эти данные... Что вероятно и получается. ;)
...
Рейтинг: 0 / 0
02.09.2009, 16:58
    #36175191
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
Ну если например на странице объявить свойство типа String. Затем заполнить это свойство неким значением, например "ААА". И когда бы я не обратился к этому свойству на чтение, то всегда получу строку "ААА". Почему с массивом не так?
Несмотря на то, что область существования любого свойства глобальная в рамках класса, значения из массива теряются сразу после выхода из функции, где были заполнены.
...
Рейтинг: 0 / 0
02.09.2009, 21:02
    #36175662
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniПочему с массивом не так?

Таки хранять может подругому... От того и особенность такая...
...
Рейтинг: 0 / 0
03.09.2009, 10:23
    #36176165
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
Элементарный пример:
Код: 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.
Class QuaSyCoreApp.QuaSyCore.Tools.TestClass Extends %ZEN.Component.page
{
	
Parameter NAMESPACE = "http://www.intersystems.com/QuaSyCore";

Property ArrayData As %Library.ArrayOfDataTypes;


/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen">
<pane>
<button onclick="return zenPage.Build();" caption="Build Array" />
<button onclick="return zenPage.ShowSize();" caption="Verify Size" />
</pane>
</page>
}

Method Build() As %ZEN.Datatype.integer [ ZenMethod ]
{
	set ..ArrayData = ##class(%Library.ArrayOfDataTypes).%New()
	do ..ArrayData.SetAt( 1 , 1 )
	do ..ArrayData.SetAt( 2 , 2 )
	do ..ArrayData.SetAt( 3 , 3 )
	do ..ShowSize()
	q ..ArrayData.Count()
}

Method ShowSize() As %ZEN.Datatype.integer [ ZenMethod ]
{
	&js<alert("#(..ArrayData.Count())#");>
	q ..ArrayData.Count()
}

}

Нажимаю кнопку "Build Array". Alert - 3.
Следом нажимаю "Verify Size". Alert - 0.
Куда подевались элементы ArrayData ?
...
Рейтинг: 0 / 0
03.09.2009, 10:35
    #36176184
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniКуда подевались элементы ArrayData ?

Предположу следующее...
- Зен-метод выполняется на сервере
- попав "туда" ты создал в памяти массив
- ушел оттуда
- снова пришел, массива там уже нет, т.к. никто его на сервере и не сохранял...
...
Рейтинг: 0 / 0
03.09.2009, 10:40
    #36176199
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
krvsasutniКуда подевались элементы ArrayData ?

Предположу следующее...
- Зен-метод выполняется на сервере
- попав "туда" ты создал в памяти массив
- ушел оттуда
- снова пришел, массива там уже нет, т.к. никто его на сервере и не сохранял...

Я думаю примерно также. Тогда не совсем ясно почему примитивные типы сохраняют свои значения в аналогичных ситуациях.
И каким образом можно добиться сохранения массивов? Есть ли нормальные пути для этого кроме сериализации?
...
Рейтинг: 0 / 0
03.09.2009, 10:44
    #36176212
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
Думается мне что с тем же успехом можно создать класс (обычный) с свойсттвом типа массив... Открыть его в терминале... Натыкать туда значений... Потом (не сохраняя и закрывая) закрыть терминал... Потом снова его открыть и обнаружить что массива-то и нету.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
03.09.2009, 10:45
    #36176216
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniТогда не совсем ясно почему примитивные типы сохраняют свои значения в аналогичных ситуациях.

Они может в "реквестах" хранятся... Т.е. принцип хранения другой...
...
Рейтинг: 0 / 0
03.09.2009, 10:48
    #36176226
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniИ каким образом можно добиться сохранения массивов?

Зачем они тебе нужны? И зачем вообще использовать какие-то свойства на зеновской странице ели это не "принимающие" параметры из УРЛа?
...
Рейтинг: 0 / 0
04.09.2009, 02:25
    #36178030
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutni,

Property ArrayData As %Library.ArrayOfDataTypes; - вроде бы неверно...

Рискну предположить, что нельзя сохранить потому, что в пакете %ZEN.Datatype нет никаких массивов - там только лист есть - мож его и пользовать?

Property ArrayData As %ZEN.Datatype.list

Или унаследовать свой тип от %ZEN.Datatype.datatype, и с ним работать
...
Рейтинг: 0 / 0
04.09.2009, 12:08
    #36178663
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
Ответили, что вместо
Код: plaintext
1.
Property ArrayData As %Library.ArrayOfDataTypes;
нужно использовать что-то вроде
Код: plaintext
1.
Property ArrayData as array of %String;
Я проверил. Так оно работает.
Но а если элементами массива являются более сложные объекты (например матрицы), то та-же беда.
...
Рейтинг: 0 / 0
04.09.2009, 13:33
    #36178920
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutni , че ты там хранишь?
...
Рейтинг: 0 / 0
04.09.2009, 15:58
    #36179388
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
krvsa sutni , че ты там хранишь?

Данные. :)
Информация для построения графиков.
...
Рейтинг: 0 / 0
06.09.2009, 11:16
    #36180543
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ArrayOfDataTypes как Property
sutniДанные. :)

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


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