Пакет QUEUE

Clarion, Clarion 7

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

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

Пакет QUEUE

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

kreator писал(а):
30 Ноябрь 2018, 10:52
Естественно!
Ну да. В принципе, если современная наука не знает других способов - то это решение вопроса.
Причём GROUP предпочтительней CLASS. Зачем платить больше, если и так всё работает ? ;)

Спасибо за помощь ! :)
«V» значит Вендетта !

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

Пакет QUEUE

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

Класс - это стильно, модно, молодёжно :D .
We are hard at work… for you. :)

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

Пакет QUEUE

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

Не надо никаких NEW/DISPOSE:

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

Que1 QUEUE
Name string(20)
     END
Que2 QUEUE
City string(20)
street string(32)
     END

SuperGrp  GROUP
Names        &QUEUE
Addresses    &QUEUE
          END

SuperGrp.Names &= Que1
SuperGrp.Addresses &= Que2
С уважением, ДП

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

Пакет QUEUE

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

Дед Пахом писал(а):
30 Ноябрь 2018, 12:12
Не надо никаких NEW/DISPOSE:
Спасибо ! Это уже совсем хорошо. Я бы даже сказал просто отлично !
Пакет очередей - есть, и можно очень удобно подцеплять для передачи в процедуры нужные очереди !
И при этом не париться с контролем и утечками памяти. :)
«V» значит Вендетта !

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 905
Зарегистрирован: 06 Ноябрь 2014, 12:48

Пакет QUEUE

Сообщение finsoftrz » 30 Ноябрь 2018, 16:55

Дед Пахом писал(а):
30 Ноябрь 2018, 12:12
Не надо никаких NEW/DISPOSE:
Ну вот, только хотел поглумиться над "молодежью", дедушка опередил... :-)
Рязань решает.

Аватара пользователя
vic7tar
Активист
Сообщения: 147
Зарегистрирован: 09 Февраль 2017, 20:12

Пакет QUEUE

Сообщение vic7tar » 02 Декабрь 2018, 12:15

Дед Пахом писал(а):
30 Ноябрь 2018, 12:12
. . .
SuperGrp.Addresses &= Que2
А эта штука даст нужный результат?
C10, Win10x64

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

Пакет QUEUE

Сообщение Yufil » 02 Декабрь 2018, 22:57

Я вот в начале показывал ( правда, неудачно) свой класс Dumper, куда фигачатся ссылки на несколько заранее неизвестных очередей и/или групп. Мне как раз надо было передавать-сохранять-восстанавливать пачку очередей-групп-просто переменных.
DumpClass.Q содержит очередь ссылок на элементы - очереди, потом по идентификатору я могу достать нужный элемент обратно.

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

DumpQ     Queue,Type
Id        Cstring(20)  ! Идентификатор переменной
Type      String(1)    ! Тип поля
Addr      Any          ! Адрес поля
AddrG     &Group       ! Адрес группы
AddrQ     &Queue       ! Адрес очереди
Address   Ulong        ! Истинный адрес группы
RecSize   Long         ! Размер поля
RecCount  Long         ! Количество записей
          End


DumpClass Class,Type,Module('Dumper.Clw')
Q         &DumpQ
DebugInfo Cstring(1000)
Construct  Procedure
Destruct  Procedure
AddField  Procedure(String,*?)
AddField  Procedure(String,*Group)
AddField  Procedure(String,*Queue)
SaveBlob  Procedure(*Blob)
LoadBlob  Procedure(*Blob),Long,Proc
          End
DumpClass позволяет давать ссылки на произвольное количество очередей в одном объекте.

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

     P.AddField('ZTstQ',TstQ)
     P.AddField('ResQ',ResQ)
     P.AddField('Qlist',QList)
     P.AddField('QGroup',QGroup)
Здесь я в одном элементе ссылаюсь на очереди TstQ, ResQ, Qlist и Qgroup ( что-то связанное с тестированием - список тестов-вопросов-ответов и прочее ). А потом можно передать объект типа DumpClass и по имени вытащить необходимые очереди. Собственно, работает давным-давно...

Это вот всякие исходники...
https://mega.co.nz/#!pxY0VQwR!B2l1BEHvb ... voxTx-XoSI
https://mega.co.nz/#!R4Rg1TAK!hyP2E8Wsy ... l8fPlta2lI

Ответить