Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Позиция свойства в листе / 19 сообщений из 19, страница 1 из 1
29.08.2011, 11:46
    #37415738
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Добрый день.

Как мне получить позицию свойства в списке при стандартной стратегии хранения?
...
Рейтинг: 0 / 0
29.08.2011, 12:01
    #37415774
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Наверное это запрятано в классе %Library.CompiledProperty ...
...
Рейтинг: 0 / 0
29.08.2011, 12:03
    #37415784
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Судя по названию - может быть.
Но я там не нашел.
...
Рейтинг: 0 / 0
29.08.2011, 12:23
    #37415827
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
michaeldevpНо я там не нашел.
Там есть хитрое свойство Parameters ... Возможно в нёт-то и спрятано.
...
Рейтинг: 0 / 0
29.08.2011, 12:28
    #37415843
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Действительно, там есть некие числа.
Но они не являются номерами в листе.
Есть информация, что это за числа и как их сопоставить с реальным хранением данных?
...
Рейтинг: 0 / 0
29.08.2011, 12:31
    #37415847
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
michaeldevpДействительно, там есть некие числа.
Но они не являются номерами в листе.
Есть информация, что это за числа и как их сопоставить с реальным хранением данных?
Надобности в этом у меня небыло... Да и при описании "прямого" доступа к данным обычно говорили "зная позицию свойства в строке ..."...
...
Рейтинг: 0 / 0
29.08.2011, 12:38
    #37415860
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
michaeldevp , предположу что в классе %Library.ClassDefinition есть свойство Properties . Так вот позиция идентификатора свойства и есть позиция его значения в стороке значений...
...
Рейтинг: 0 / 0
29.08.2011, 12:53
    #37415896
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
krvsa michaeldevp , предположу что в классе %Library.ClassDefinition есть свойство Properties . Так вот позиция идентификатора свойства и есть позиция его значения в стороке значений...

нет
...
Рейтинг: 0 / 0
29.08.2011, 12:59
    #37415906
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
В любом случае данные хранятся в позициях "по мере добавления свойств". Даже если некоторых уже нет в классе...

Есть правда хитрый шахер-махер, позволяющий опять все начать с 1,2,3...
...
Рейтинг: 0 / 0
29.08.2011, 13:03
    #37415917
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
krvsa,

Это я знаю.
Когда открываешь документацию класса - то свойства видны и видны в том порядке, в каком нужно (оставим пока вопрос о пропущенных/удаленных полях).
Как-то же сама документация получает этот порядок.
...
Рейтинг: 0 / 0
29.08.2011, 13:25
    #37415963
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Код: plaintext
1.
2.
3.
4.
5.
6.
 s x=##class(%Dictionary.ClassDefinition).%OpenId(<class name>).Properties 
 if $isobject(x) {
   for xx= 1 : 1  {
      s y=x.GetAt(xx) q:y=""
      w y.Name,"",y.SequenceNumber,!
   }
 }
...
Рейтинг: 0 / 0
29.08.2011, 13:28
    #37415967
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Или аналогично - по Dictionary.CompiledClass, в зависимости от того, что требуется.
...
Рейтинг: 0 / 0
29.08.2011, 13:37
    #37415980
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Alexey Maslov,

У многих свойств SequenceNumber=0.
Да и по тем, где не 0, не соотв. документации класса.
...
Рейтинг: 0 / 0
29.08.2011, 13:59
    #37416034
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Занимательная диаграмма

http://www.scribd.com/doc/25905963/Cache-Dictionary-Class-Model
...
Рейтинг: 0 / 0
29.08.2011, 14:31
    #37416110
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
michaeldevp, Сначала добираемся до структуры хранения класса - %Dictionary.CompiledStorage (%Dictionary.StorageDefinition), от нее переходим к структуре хранению данных %Dictionary.CompiledStorageData и уже от нее к структуре хранения значений %Dictionary.CompiledStorageDataValue. Свойство Name - искомое значение
...
Рейтинг: 0 / 0
29.08.2011, 14:52
    #37416145
michaeldevp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
doublefint,

Совершенно верно!
Именно это и следовало из диаграммы.
...
Рейтинг: 0 / 0
29.08.2011, 14:52
    #37416147
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
В портале управления - SQL - Выполнить SQL запрос:
Select * From %Dictionary.CompiledStorageDataValue Where parent %StartsWith 'Your.ClassName'
Или
Select * From %Dictionary.StorageDataValueDefinition Where parent %StartsWith 'Your.ClassName'
...
Рейтинг: 0 / 0
29.08.2011, 15:05
    #37416168
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
michaeldevp, это следовало и из описания структуры хранения класса (В Студио открыть класс - Просмотр - Просмотр способа хранения)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<Storage name="Default">
 <Data name="ParagraphDefaultData">
  <Value name="1">
   <Value>%%CLASSNAME</Value>
  </Value>
  <Value name="2">
    <Value>name</Value>
  </Value>
</Data>
....
</Storage>
...
Рейтинг: 0 / 0
31.08.2011, 05:05
    #37418448
Socratdv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позиция свойства в листе
Метод возвращает номер свойства:
Код: plaintext
1.
2.
3.
ClassMethod getPropIndex(class, property As %String) As %Integer
{
	q $LG($Get($$$EXTPROPsqlinfo($$$pEXT,class,property)), 3 )
}
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Позиция свойства в листе / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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