|
|
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
ДВ - легко, а структуру без разбора по частям не получается. Хотелось бы хранить в базе значения массива структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 17:12 |
|
||
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
Можно попробовать реализовать следующее: Заменить структуры на классы или иерархию классов, в которой базовый (абстрактный) класс будет иметь виртуальную функцию сериализации*. В потомках от базового класса определять эту функцию для каждого конкретного класса. Возможно (не уверен) получится это сделать и в базовом классе. Любой объект в PB имеет свойство-объект ClassDefinition, который в свою очередь имеет свойство VariableList[ ]. Перебираете массив, достаете значения переменных и складываете в строку или Blob. Кстати (посмотрел в хелпе) структуры тоже имеют это свойство, так что, если хотите остаться со структурами, можно просто написать одну глобальную функцию для сериализации произвольной структуры. И еще: если ваш класс состоит из полей элементарных типов, то проблем нет. Но, если в состав класса A входит поле класса B , то класс B тоже должен быть сериализуемым. Всего этого я не делал, просто размышления. Попробуйте... *Сериализация представляет собой процесс преобразования состояния объекта в форму, пригодную для передачи или сохранения. Сериализацию дополняет десериализация, в результате которой поток преобразуется в объект. Сочетание этих процессов позволяет с легкостью сохранять и передавать данные. (MSDN) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2005, 02:52 |
|
||
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
rcryo Любой объект в PB имеет свойство-объект ClassDefinition, который в свою очередь имеет свойство VariableList[ ]. Перебираете массив, достаете значения переменных и складываете в строку или Blob. ИМХО, так можно получить только типы и имена переменных, а значения придется получать через PBNI (т.е. не менее PB9 и пишется на C++) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 17:09 |
|
||
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИМХО, так можно получить только типы и имена переменных, а значения придется получать через PBNI (т.е. не менее PB9 и пишется на C++) Ну и передать указатель на функцию, которая копирует скопирует область памяти из структуры куда нам нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 20:51 |
|
||
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
Гм, т.е. указатель на структуру в функцию... Что-то такое кажется даже в WinAPI есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 20:59 |
|
||
|
Как структуру в блоб или стринг закатать?
|
|||
|---|---|---|---|
|
#18+
В архиве пример функции для "закатывания" структуры или произвольного объекта в строку и проект для проверки её работы. Объект должен содежать только простые типы и не поддерживается наследование, это уж сами кому надо сделаете. Чистый PowerScript, правда на PB10, но это не принципиально, просто других версий у меня счас нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 19:48 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33038893&tid=1338376]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 388ms |

| 0 / 0 |
