powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как структуру в блоб или стринг закатать?
6 сообщений из 6, страница 1 из 1
Как структуру в блоб или стринг закатать?
    #33038893
ДВ - легко, а структуру без разбора по частям не получается.
Хотелось бы хранить в базе значения массива структур.
...
Рейтинг: 0 / 0
Как структуру в блоб или стринг закатать?
    #33043818
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать реализовать следующее:
Заменить структуры на классы или иерархию классов, в которой базовый (абстрактный) класс будет иметь виртуальную функцию сериализации*. В потомках от базового класса определять эту функцию для каждого конкретного класса.
Возможно (не уверен) получится это сделать и в базовом классе. Любой объект в PB имеет свойство-объект ClassDefinition, который в свою очередь имеет свойство VariableList[ ]. Перебираете массив, достаете значения переменных и складываете в строку или Blob.
Кстати (посмотрел в хелпе) структуры тоже имеют это свойство, так что, если хотите остаться со структурами, можно просто написать одну глобальную функцию для сериализации произвольной структуры.
И еще: если ваш класс состоит из полей элементарных типов, то проблем нет. Но, если в состав класса A входит поле класса B , то класс B тоже должен быть сериализуемым.
Всего этого я не делал, просто размышления. Попробуйте...

*Сериализация представляет собой процесс преобразования состояния объекта в форму, пригодную для передачи или сохранения. Сериализацию дополняет десериализация, в результате которой поток преобразуется в объект. Сочетание этих процессов позволяет с легкостью сохранять и передавать данные. (MSDN)
...
Рейтинг: 0 / 0
Как структуру в блоб или стринг закатать?
    #33044969
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryo Любой объект в PB имеет свойство-объект ClassDefinition, который в свою очередь имеет свойство VariableList[ ]. Перебираете массив, достаете значения переменных и складываете в строку или Blob.

ИМХО, так можно получить только типы и имена переменных, а значения придется получать через PBNI (т.е. не менее PB9 и пишется на C++)
...
Рейтинг: 0 / 0
Как структуру в блоб или стринг закатать?
    #33045119
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИМХО, так можно получить только типы и имена переменных, а значения придется получать через PBNI (т.е. не менее PB9 и пишется на C++)
Ну и передать указатель на функцию, которая копирует скопирует область памяти из структуры куда нам нужно...
...
Рейтинг: 0 / 0
Как структуру в блоб или стринг закатать?
    #33045121
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, т.е. указатель на структуру в функцию...

Что-то такое кажется даже в WinAPI есть...
...
Рейтинг: 0 / 0
Как структуру в блоб или стринг закатать?
    #33046963
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В архиве пример функции для "закатывания" структуры или произвольного объекта в строку и проект для проверки её работы. Объект должен содежать только простые типы и не поддерживается наследование, это уж сами кому надо сделаете.
Чистый PowerScript, правда на PB10, но это не принципиально, просто других версий у меня счас нет.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как структуру в блоб или стринг закатать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]