Конференция "Сети" » сериализация и десериализация [D7, WinXP]
 
  • andylee © (13.06.11 20:53) [0]
    Есть приложение содержащее компоненты IdUDPClient и IdUDPServer, есть "простой" класс состоящий из нескольких public свойств. С помощью метода move(...), экземпляр класса преобразуется в байт-массив и отправляется .NET клиенту, где происходит десериализация и клиент получает восстановленный объект. После выполнения манипуляций с объектом на сторону Делфи приложения отправляется измененный объект (то же в виде байт-массива), вот вопрос, а есть ли стандартные средства бинарной десериализации в Делфи, и если нет, то на что следует обратить внимание?
  • Eraser © (14.06.11 01:14) [1]
    > [0] andylee ©   (13.06.11 20:53)

    TStream.ReadComponent
    TStream.WriteComponent
  • andylee © (14.06.11 06:17) [2]
    Eraser, не годится, т.к. класс не является наследником TComponent (иначе у .Net клиента не совпадают размеры типа и присланного массива).
  • Eraser © (14.06.11 16:05) [3]
    Для межплатформенной сериализации я бы использовал XML.
  • andylee © (15.06.11 13:44) [4]
    Прошу прощения, а в Delphi есть средства для передачи XML по сети (Web-service  не предлагать).
  • andylee © (15.06.11 14:53) [5]
    В принципе, byte - вектор на сторону делфи приходит правильный, я пока, как вариант, вижу только самостоятельное написание метода его обработки (хотя плохо представляю в какой последовательности в массиве передаются типы).
  • andylee © (15.06.11 16:14) [6]
    В общем, задачу решил, но крайне не красиво - с помошью CopyMemory(..), теперь если что-нибудь изменится в структуре передаваемых данных, то придется пизменять и код метода...
  • Eraser © (15.06.11 16:54) [7]
    > [4] andylee ©   (15.06.11 13:44)

    Да полно! Чем XML от других данных отличается то?
 
Конференция "Сети" » сериализация и десериализация [D7, WinXP]
Есть новые Нет новых   [134435   +18][b:0][p:0]