专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

c++builder调用delphi编写的datasnap程序的有关问题

发布时间:2011-06-28 14:01:41 文章来源:www.iduyao.cn 采编人员:星星草
c++builder调用delphi编写的datasnap程序的问题
delphi编写datasnap服务器
new datasnap server向导
unit ServerContainerUnit1;

interface

uses
  SysUtils, Classes, 
  DSTCPServerTransport,
  DSServer, DSCommonServer; 

type
  TServerContainer1 = class(TDataModule)
  DSServer1: TDSServer;
  DSTCPServerTransport1: TDSTCPServerTransport;
  DSServerClass1: TDSServerClass;
  procedure DSServerClass1GetClass(DSServerClass: TDSServerClass;
  var PersistentClass: TPersistentClass);
  private
  { Private declarations }
  public
  end;

var
  ServerContainer1: TServerContainer1;

implementation

uses Windows, ServerMethodsUnit1;

{$R *.dfm}

procedure TServerContainer1.DSServerClass1GetClass(
  DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);
begin
  PersistentClass := ServerMethodsUnit1.TServerMethods1;
end;

end.



unit ServerMethodsUnit1;

interface

uses
  SysUtils, Classes, DSServer, DBXJSON;

type
  TServerMethods1 = class(TDSServerModule)
  private
  { Private declarations }
  public
  { Public declarations }
  pecho: TDBXCallback;

  function EchoString(Value: string): string;
  procedure reg_echo(pecho: TDBXCallback);
  end;

var
  ServerMethods1: TServerMethods1;

implementation

{$R *.dfm}

function TServerMethods1.EchoString(Value: string): string;
var
  param: TJSONObject;
  returnresult: TJSONString;
begin
  param := TJSONObject.Create(TJSONPair.Create('echostring',Value));
  returnresult := pecho.Execute(param) as TJSONString;
  Result := returnresult.Value;
end;

procedure TServerMethods1.reg_echo(pecho: TDBXCallback);
begin
  self.pecho := pecho;
end;

end.

c++builder编写客户端代码

//---------------------------------------

#ifndef Unit4H
#define Unit4H

#include <DBXJSON.hpp>
//---------------------------------------
class TEchoCallback : TDBXCallback
{
public:
TJSONValue* __fastcall Execute(const TJSONValue* Arg);
};

#endif
//---------------------------------------


#pragma hdrstop

#include "Unit4.h"

//---------------------------------------

#pragma package(smart_init)

TJSONValue* __fastcall TEchoCallback::Execute(const TJSONValue* Arg)
{
TJSONString* returnstr;
TJSONObject* ArgObj = (TJSONObject*)Arg;
returnstr = new TJSONString(L"hello "+ArgObj->Get(0)->Value());
return returnstr;
}

自动生成的代码
#ifndef Unit3H
#define Unit3H

#include "DBXCommon.hpp"
#include "Classes.hpp"
#include "SysUtils.hpp"
#include "DB.hpp"
#include "SqlExpr.hpp"
#include "DBXDBReaders.hpp"

  class TServerMethods1Client : public TObject
  {
  private:
  TDBXConnection *FDBXConnection;
  bool FInstanceOwner;
  TDBXCommand *FEchoStringCommand;
  TDBXCommand *Freg_echoCommand;
  public:
  __fastcall TServerMethods1Client::TServerMethods1Client(TDBXConnection *ADBXConnection);
  __fastcall TServerMethods1Client::TServerMethods1Client(TDBXConnection *ADBXConnection, bool AInstanceOwner);
  __fastcall TServerMethods1Client::~TServerMethods1Client();
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: