Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Всем привет. Имеется класс MyClass в нем есть уникальное свойство ID свойство Articles - тип массив типа %Library.String и свойство Notes - символьный поток (Cheracter Stream) 1) Нужно в Терминале создать новый объект Arts класса %Library.ArrayOfDataTypes. Добавитьв массив три или большее количество Articles, индексированных по дате публикации. Для этого нужно воспользоваться функцией SetAt(). 2) Создаю новый объект класса MyClass в Терминале. Добавляю несколько строк в свойство Notes. Делаю я это так: set st=##class(Main.MyClass).%New() do st.Notes.Write("Заметка 1") do st.%Save() Теперь мне нужно используя метод %OpenId(<ID>) открыть объект класса MyClass и присвоить созданный массив Arts (см. пункт 1) свойству Articles объекта MyClass Подскажите пожалуйста - Как это делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 15:34 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Ольга СеменоваВсем привет. Нужно в Терминале создать новый объект Arts класса %Library.ArrayOfDataTypes. Добавитьв массив три или большее количество Articles, индексированных по дате публикации. Для этого нужно воспользоваться функцией SetAt(). Set arts=##class(%Library.ArrayOfDataTypes).%New(), а как заполнять массив Вы смотрите сами. Для теста я сделал так Set arts(1)="1" Set arts(1)="2" Set arts(1)="3" D arts.%Save() Ольга Семенова Теперь мне нужно используя метод %OpenId(<ID>) открыть объект класса MyClass и присвоить созданный массив Arts (см. пункт 1) свойству Articles объекта MyClass Подскажите пожалуйста - Как это делается? set st=##class(Main.MyClass).%OpenId(<ID>) ser st.Articles=arts D st.%Save() где arts это объектная ссылка на созданный выше массив Для проверки можно посмотреть set st=##class(Main.MyClass).%OpenId(<ID>) w st.Articles Результат : 1@%Library.ArrayOfDataTypes или перед знаком @ любое число - это есть объектная ссылка на массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 03:48 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
спасибо за ответ solwolf Set arts=##class(%Library.ArrayOfDataTypes).%New(), а как заполнять массив Вы смотрите сами. Для теста я сделал так Set arts(1)="1" Set arts(1)="2" Set arts(1)="3" D arts.%Save() [quot] а можно пару вопросов: 1) SetAt() и Set это одно и тоже? 2) [quot solwolf] Set arts(1)="1" Set arts(1)="2" Set arts(1)="3"[quot] а разве нужно не так? Это опечатка? или так и нужно? Set arts( 1 )="1" Set arts( 2 )="2" Set arts( 3 )="3" 3) [quot solwolf]D arts.%Save()[quot] Что такое D ? [quot solwolf]set st=##class(Main.MyClass).%OpenId(<ID>) ser st.Articles=arts D st.%Save() где arts это объектная ссылка на созданный выше массив Для проверки можно посмотреть set st=##class(Main.MyClass).%OpenId(<ID>) w st.Articles Что такое w ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 08:09 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
А мне всегда было интересно... Что толкает разработчиков к использованию свойств типа "массив" и "коллекция"? В чем они видят их преимущество перед другим классом, в котором эти же данные станут "простыми" свойствами? ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 08:10 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Ольга СеменоваЧто такое D ? Это команда Do (выполнить) Ольга СеменоваЧто такое w ? Это команда Write (вывод на текущее устройство) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 09:01 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Ольга Семенова1) SetAt() и Set это одно и тоже? В данном примере Set это оператор "присвоения"... А откуда вы взяли SetAt()? Если не в курсе про D и W :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 09:08 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Ольга Семенова solwolf Set arts(1)="1" Set arts(1)="2" Set arts(1)="3" а разве нужно не так? Это опечатка? или так и нужно? Set arts( 1 )="1" Set arts( 2 )="2" Set arts( 3 )="3" Наверное просто копировал строки и не везде поменял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 09:11 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
krvsa Ольга Семенова1) SetAt() и Set это одно и тоже? В данном примере Set это оператор "присвоения"... А откуда вы взяли SetAt()? Если не в курсе про D и W :) в методичке написано что нужно использовать SetAt() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 10:22 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Ольга Семенова в методичке написано что нужно использовать SetAt() Ну да, это то же самое что не знающему языка С посоветовать использовать strcpy(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 10:25 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Я смотрел описание класса %Library.ArrayOfDataTypes ... Там нет такого метода SetAt() :( GetAt() есть. Применительно к классу SetAt() должен быть методом. ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 11:02 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
krvsa Ольга Семенова solwolf Set arts(1)="1" Set arts(1)="2" Set arts(1)="3" а разве нужно не так? Это опечатка? или так и нужно? Set arts( 1 )="1" Set arts( 2 )="2" Set arts( 3 )="3" Наверное просто копировал строки и не везде поменял... Да действительно копировал и не поменял. :) Я Вам привел этот пример для наглядности. Ольга Семенова свойство Articles - тип массив типа %Library.String Я так понимаю, что класс имеет свойство Articles типа %Library.ArrayOfDataTypes ? Просто если это свойство будет иметь тип %Library.String, то в нем сохранится только строка 1@%Library.ArrayOfDataTypes, а не сам объект. Это я уточняю для того, чтобы Вы представляли себе отличие свойства имеющего простой тип от свойства имеющего тип объекта. Ольга Семенова в методичке написано что нужно использовать SetAt() У объекта ArrayOfDataTypes нет методов, которыми его можно заполнять кроме разве что метода BuildValueArray. Есть методы при помощи которых пожно передвигаться и возвращать элементы массива. Так что если Вы заполните массив таким образом Set arts(1)="1" ошибкой это не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 12:45 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
krvsaЯ смотрел описание класса %Library.ArrayOfDataTypes ... Там нет такого метода SetAt() :( GetAt() есть. Применительно к классу SetAt() должен быть методом. ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT %Library.AbstractArray наследует %Library.ArrayOfDataTypes метод SetAt(). Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 14:35 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Значит можно писать и так: D arts.SetAt(<значение>,<индекс>) А Insert() там получается то же есть? ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 14:38 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
У %Library.AbstractArray даже примерчик есть с SetAt() :) код программыSet arr=##class(%ArrayOfDataTypes).%New() ; place items into the array Do arr.SetAt("red","color") Do arr.SetAt("large","size") Do arr.SetAt("expensive","price") ; iterate over contents of array Set key="" For Set value=arr.GetNext(.key) Quit:key="" Write key,":",value,! ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 14:44 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
[quot solwolf] Я так понимаю, что класс имеет свойство Articles типа %Library.ArrayOfDataTypes ? Просто если это свойство будет иметь тип %Library.String, то в нем сохранится только строка 1@%Library.ArrayOfDataTypes, а не сам объект. Это я уточняю для того, чтобы Вы представляли себе отличие свойства имеющего простой тип от свойства имеющего тип объекта. свойство Articles - типа массива (array) литералов типа %Library.String см. рисунок http://dump.ru/files/4/44964177/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 15:27 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Тогда наверное так Код: plaintext 1. 2. 3. 4. 5. Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 17:02 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
Только вот с датами в таком виде будут проблемы с сортировкой :) Лучше использовать "хоролог" ;) ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 17:04 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
krvsaТогда наверное так Код: plaintext 1. 2. 3. 4. 5. спасибо - щас буду пробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 17:11 |
|
||
|
Пару вопросов по работе в терминале
|
|||
|---|---|---|---|
|
#18+
solwolf У объекта ArrayOfDataTypes нет методов, которыми его можно заполнять кроме разве что метода BuildValueArray. Есть методы при помощи которых пожно передвигаться и возвращать элементы массива. Так что если Вы заполните массив таким образом Set arts(1)="1" ошибкой это не будет. Здесь я немножко недосмотрел. В версии Cache 5.0.21 действительно метода SetAt() нет. Он появился позже. Во всяком случае в Cache 2007 он уже есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2007, 02:50 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=34460106&tid=1559372]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 338ms |

| 0 / 0 |
