2014-04-01 3 views
1

서로 다른 두 응용 프로그램간에 "TPerson"으로 개체를 보내고받는 방법을 알고 싶습니다.다른 응용 프로그램간에 개체 전달 - Delphi XE4

DataSnap을 사용할 수 있습니까? 다른 방법이 있습니까?

감사합니다.

+1

이 링크는 흥미있을 것입니다 : http://www.fmxexpress.com/transfer-debug-objects-with-datasnap-in-delphi-xe5-firemonkey-on-android-and-ios/ I have not 직접 시도했지만 DataSnap을 사용하여 객체를 앞뒤로 전달할 수있는 것처럼 보입니다. – Sentient

+0

델파이의 직렬화 지원은 열악합니다. 주로 Datasnap 단위 : http://docwiki.embarcadero.com/RADStudio/XE4/en/Serializing_User_Objects. JSON 또는 다른 형식으로 내보내거나 가져온 다음 다른 쪽 끝의 해당 값을 사용하여 객체를 초기화하십시오.이 라이브러리는 도움이 될 수 있습니다. http : // code .google.com/p/delphi-oop/wiki/SvSerializer – alcalde

답변

1

개체를 프로세스 경계를 ​​넘어서 전달할 수 없습니다. COM 또는 JSON과 같이 직렬화해야합니다.

0

개체 인스턴스는 단지 메모리 다. 두 응용 프로그램이 동일한 컴퓨터에서 실행중인 경우에도 한 응용 프로그램에서 다른 응용 프로그램으로이 메모리 덤프를 전달하는 것은 적절하지 않습니다.

대신 원본 개체 인스턴스의 속성 값을받는 응용 프로그램으로 보내고 해당 값을 로컬 인스턴스에 적용 할 수 있습니다.

쉬운 방법 중 하나는 TPerson에 ToString() 및 FromString() 함수를 작성하는 것입니다. ToString에서 문자열을 얻은 후에는 통신 방법 (예 : TCP/IP 소켓, 공유 메모리, 전자 메일, FTP, HTTP 또는 필요에 따라)을 사용하여 수신 응용 프로그램에 문자열을 전송할 수 있습니다. 수신 응용 프로그램은 FromString 메서드를 사용하여 문자열에 포함 된 값을 사용하여받는 객체를 초기화합니다.

ToString() 및 FromString()은 RTTI를 사용하여 일반적으로 작성할 수 있습니다. 또는 간단하게 클래스에서 이전 방법으로 인코딩 할 수 있습니다. JSON 또는 XML 라이브러리도 도움이 될 수 있습니다.

관련 문제