Страница 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или группа?
А разве очередь может быть в группе ?!
Пакет QUEUE
Добавлено: 29 Ноябрь 2018, 17:14
kreator
Игорь Столяров писал(а): ↑29 Ноябрь 2018, 16:24
Дед Пахом писал(а): ↑29 Ноябрь 2018, 15:10или группа?
А разве очередь может быть в группе ?!
А мой пример не воспроизводится?
Пакет 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() ...
Естественно!