2014-04-01 36 views
1

我想知道如何在兩個不同的應用程序之間發送和接收一個對象作爲「TPerson」。在不同的應用程序之間傳遞對象 - Delphi XE4

這將是可能的使用DataSnap?有另一種方法嗎?

謝謝。

+1

此鏈接可能是有趣的:http://www.fmxexpress.com/transfer-debug-objects-with-datasnap-in-delphi-xe5-firemonkey-on-android-and-ios/我還沒有自己嘗試過,但最終的結果看起來像你可以使用DataSnap來回傳遞對象。 – Sentient

+0

Delphi中的序列化支持很差,主要在Datasnap單元中:http://docwiki.embarcadero.com/RADStudio/XE4/en/Serializing_User_Objects。否則,正如其他人所說,你必須自己檢查對象:-(,導出/導入它以JSON或另一種格式,然後用這些值初始化對象,這個庫可能會幫助你:http:// code .google.com/p/Delphi的接力/維基/ SvSerializer – alcalde

回答

1

對象無法通過進程邊界傳遞。它們必須被序列化,例如使用COM或JSON。

0

對象實例只是一堆內存。將這種內存從一個應用程序轉移到另一個應用程序是沒有意義的,即使這兩個應用程序都在同一臺計算機上運行。

相反,您可以將源對象實例的屬性值發送到接收應用程序,並將這些值應用到本地實例。

一個簡單的方法就是寫一個ToString()和一個FromString()函數給TPerson。一旦從ToString獲得一個字符串,就可以使用任何通信方法(例如TCP/IP套接字,共享內存,電子郵件,FTP,HTTP或任何符合您需要的方式)將其傳輸到接收應用程序。接收應用程序使用FromString方法使用嵌入字符串中的值初始化接收對象。

ToString()和FromString()通常可以使用RTTI寫入。或者可以簡單地在課堂上對舊的方式進行編碼。 JSON或XML庫也可以提供幫助。

相關問題