Страница 1 из 2

Пакет QUEUE

Добавлено: 28 Ноябрь 2018, 18:09
Игорь Столяров
Привет всем ! :)

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

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

Заранее спасибо за идеи. :)

Пакет QUEUE

Добавлено: 28 Ноябрь 2018, 18:40
RaFaeL
Класс можно передавать

Пакет QUEUE

Добавлено: 28 Ноябрь 2018, 19:03
Yufil
А просто передать очередь через *Queue нельзя? Запись получить через Prop:Record, а поля через Who-where-when и т д

Пакет QUEUE

Добавлено: 28 Ноябрь 2018, 19:08
gopstop2007
cmag-2011-11 ( v13n11passqueue )

Пакет QUEUE

Добавлено: 28 Ноябрь 2018, 20:46
kreator
Вот такая шальная идея.

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

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 = 'Куку'
Компилятор не ругается. А там не знаю.

Пакет QUEUE

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

Пакет QUEUE

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

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

! Создаём контейнер 
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)
!  Все очереди, группы и так далее будут восстановлены из контейнера          
Работает...

Пакет QUEUE

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

Пакет QUEUE

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

Пакет QUEUE

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

Пакет QUEUE

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

Пакет QUEUE

Добавлено: 29 Ноябрь 2018, 17:14
kreator
Игорь Столяров писал(а): 29 Ноябрь 2018, 16:24
Дед Пахом писал(а): 29 Ноябрь 2018, 15:10или группа?
А разве очередь может быть в группе ?! :shock:
А мой пример не воспроизводится?

Пакет QUEUE

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

Пакет QUEUE

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

Пакет QUEUE

Добавлено: 30 Ноябрь 2018, 10:52
kreator
Игорь Столяров писал(а): 30 Ноябрь 2018, 10:45 Но на этапе выполнения, очередь должна быть создана NEW() ...
Естественно!