-
Есть приложение содержащее компоненты IdUDPClient и IdUDPServer, есть "простой" класс состоящий из нескольких public свойств. С помощью метода move(...), экземпляр класса преобразуется в байт-массив и отправляется .NET клиенту, где происходит десериализация и клиент получает восстановленный объект. После выполнения манипуляций с объектом на сторону Делфи приложения отправляется измененный объект (то же в виде байт-массива), вот вопрос, а есть ли стандартные средства бинарной десериализации в Делфи, и если нет, то на что следует обратить внимание?
-
> [0] andylee © (13.06.11 20:53)
TStream.ReadComponent TStream.WriteComponent
-
Eraser, не годится, т.к. класс не является наследником TComponent (иначе у .Net клиента не совпадают размеры типа и присланного массива).
-
Для межплатформенной сериализации я бы использовал XML.
-
Прошу прощения, а в Delphi есть средства для передачи XML по сети (Web-service не предлагать).
-
В принципе, byte - вектор на сторону делфи приходит правильный, я пока, как вариант, вижу только самостоятельное написание метода его обработки (хотя плохо представляю в какой последовательности в массиве передаются типы).
-
В общем, задачу решил, но крайне не красиво - с помошью CopyMemory(..), теперь если что-нибудь изменится в структуре передаваемых данных, то придется пизменять и код метода...
-
> [4] andylee © (15.06.11 13:44)
Да полно! Чем XML от других данных отличается то?
|