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

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

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

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


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