Пакет QUEUE

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Пакет QUEUE

Сообщение Игорь Столяров » 28 Ноябрь 2018, 18:09

Привет всем ! :)

Возникла непреодолимая потребность передавать в процедуры очереди (QUEUE).
Проблема в том, что много и они разные. И вот здесь какое-то затменье нашло. :(

Можно ли как-то объединить их в какой-то пакет, пул, что бы передавать в процедуру один адрес ?
Что-то вроде GROUP, для типов данных Byte, Long, String и т.д. ?

Заранее спасибо за идеи. :)
«V» значит Вендетта !

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 760
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Пакет QUEUE

Сообщение RaFaeL » 28 Ноябрь 2018, 18:40

Класс можно передавать

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Пакет QUEUE

Сообщение Yufil » 28 Ноябрь 2018, 19:03

А просто передать очередь через *Queue нельзя? Запись получить через Prop:Record, а поля через Who-where-when и т д

gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

Пакет QUEUE

Сообщение gopstop2007 » 28 Ноябрь 2018, 19:08

cmag-2011-11 ( v13n11passqueue )
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Пакет QUEUE

Сообщение kreator » 28 Ноябрь 2018, 20:46

Вот такая шальная идея.

Код: Выделить всё

GLO:MyQueue          QUEUE,TYPE,PRE()
GLO:MyQueueField       STRING(20)
                     END

Код: Выделить всё

LOC:MyGroup          GROUP,PRE()                           ! 
LOC:MyQueue1         &GLO:MyQueue                          ! 
LOC:MyQueue2         &GLO:MyQueue                          ! 
                     END                                   ! 

Код: Выделить всё

LOC:MyGroup.LOC:MyQueue1.GLO:MyQueueField = 'Куку'
Компилятор не ругается. А там не знаю.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Пакет QUEUE

Сообщение Игорь Столяров » 29 Ноябрь 2018, 0:17

gopstop2007 писал(а):
28 Ноябрь 2018, 19:08
cmag-2011-11 ( v13n11passqueue )
А что-то у меня нет такого … :( По крайне мере в тех комплектах ClaMag что на FTP форума.
Если можно - сбросьте пожалуйста в личку, на e-mail или на FTP … Спасибо !
«V» значит Вендетта !

Yufil
Ветеран движения
Сообщения: 1062
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

Пакет QUEUE

Сообщение Yufil » 29 Ноябрь 2018, 10:07

А в чём сущность проблемы? У меня возникала потребность сохранять и восстанавливать данные сессии, состоящей из нескольких групп-очередей-просто переменных. Сессия сохраняется в БД, а потом восстанавливается.
Примерно так

Код: Выделить всё

! Создаём контейнер 
H   Class(DumpClass)
    End
! Регистрируем очереди, группы - и всё такое. 
! Первый параметр  - идентификатор, чтобы найти объект в контейнере 
          H.AddField('SCG',SCN:ScGroup)
          H.AddField('SCQ',SCN:GScStep)
          H.AddField('HISQ',HISQ:HISQ)
          H.AddField('STQ',STQ:Q)
          H.AddField('MULTI',GLO:MultiInfo)
          H.AddField('UNIAR',Glo:UniarGroup)
          H.AddField('SCORM',Glo:ScormGroup)
          H.AddField('STACK',Sta:Record)
          H.AddField('PLANQ',PlanQ:Group)
          H.AddField('SCSTEP',SCN:GScStep)
          H.AddField('SCGROUP',SCN:ScGroup)
!  А дальше пишем все переменные в контейнер ( Blob-поле Ses:Info ) 
          H.SaveBlob(Ses:Info)
!         Access.Session.Update() 
!  Или, напротив, достаём из контейнера 
!        Access.Session.Fetch(...) 
          H.LoadBlob(Ses:Info)
!  Все очереди, группы и так далее будут восстановлены из контейнера          
Работает...

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Пакет QUEUE

Сообщение Игорь Столяров » 29 Ноябрь 2018, 14:40

gopstop2007 писал(а):
28 Ноябрь 2018, 19:08
cmag-2011-11 ( v13n11passqueue )
Спасибо - я пример получил …
Только я чего-то не понял. Там описан тип очереди и по этому типу эта очередь передаётся в процедуры.
В принципе, то же самое описано и в справке. Передать в процедуру очередь нет никаких проблем.
Или что этот пример вообще демонстрирует ? Описание читал - но там описан процесс, а не смысл действия … :(
«V» значит Вендетта !

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 760
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

Пакет QUEUE

Сообщение RaFaeL » 29 Ноябрь 2018, 14:48

Так а чем класс не устраивает?

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Пакет QUEUE

Сообщение Дед Пахом » 29 Ноябрь 2018, 15:10

RaFaeL писал(а):
29 Ноябрь 2018, 14:48
Так а чем класс не устраивает?
или группа?
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Пакет QUEUE

Сообщение Игорь Столяров » 29 Ноябрь 2018, 16:24

Дед Пахом писал(а):
29 Ноябрь 2018, 15:10
или группа?
А разве очередь может быть в группе ?! :shock:
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Пакет QUEUE

Сообщение kreator » 29 Ноябрь 2018, 17:14

Игорь Столяров писал(а):
29 Ноябрь 2018, 16:24
Дед Пахом писал(а):
29 Ноябрь 2018, 15:10
или группа?
А разве очередь может быть в группе ?! :shock:
А мой пример не воспроизводится?
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Пакет QUEUE

Сообщение Дед Пахом » 29 Ноябрь 2018, 17:19

Игорь Столяров писал(а):
29 Ноябрь 2018, 16:24
А разве очередь может быть в группе ?!
Конечно, как в классе.
С уважением, ДП

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Пакет QUEUE

Сообщение Игорь Столяров » 30 Ноябрь 2018, 10:45

Дед Пахом писал(а):
29 Ноябрь 2018, 17:19
Конечно, как в классе.
Таки да. Спасибо. В группе или примитивном классе можно использовать ССЫЛКУ на очередь.
Но это конечно не очень удобно - нужно динамически создавать NEW() и убивать DISPOSE() очереди … :(
kreator писал(а):
28 Ноябрь 2018, 20:46
Компилятор не ругается.
Потому, что с точки зрения синтаксиса - всё OK ! Но на этапе выполнения, очередь должна быть создана NEW() ...
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Пакет QUEUE

Сообщение kreator » 30 Ноябрь 2018, 10:52

Игорь Столяров писал(а):
30 Ноябрь 2018, 10:45
Но на этапе выполнения, очередь должна быть создана NEW() ...
Естественно!
We are hard at work… for you. :)

Ответить