解决DATASNAP远程方法参数超过32个的问题
2013-07-09 11:27
651 查看
群里有位同仁提出他有一个DATASNAP远程方法超过了32个参数,然后DELPHI编译通不过,提示方法参数不能超过32个,问怎么办?于是群内同仁纷纷出主意,我说用OLEVARINAT数组,有人说用RECORD,我又说别说用RECORD,连自定义的类也是可以的。于是我想到了实现,用SUPEROBJECT序列RECORD或者CLASS为JSON的字符串挺方便的,中间件收到客户端传来的JSON字符串再还原为RECORD或者CLASS。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, superobject;
type
TPerson = record
id: Integer;
name: string;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
s: string;
procedure TForm1.Button1Click(Sender: TObject);
var
p: TPerson;
i: ISuperObject;
begin
p.id :=1;
p.name :='name';
i := SO();
i.I['id']:=p.id;
i.S['name']:=p.name;
s := i.AsString;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: ISuperObject;
begin
i := SO(s);
ShowMessage(i['id'].AsString);
showmessage(i['name'].AsString);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, superobject;
type
TPerson = record
id: Integer;
name: string;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
s: string;
procedure TForm1.Button1Click(Sender: TObject);
var
p: TPerson;
i: ISuperObject;
begin
p.id :=1;
p.name :='name';
i := SO();
i.I['id']:=p.id;
i.S['name']:=p.name;
s := i.AsString;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: ISuperObject;
begin
i := SO(s);
ShowMessage(i['id'].AsString);
showmessage(i['name'].AsString);
end;
end.
相关文章推荐
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”
- Delphi2010中使用DataSnap创建服务器时出现Socket Error# 10013的问题的解决方法
- 混合环境下WMI 远程连接常见问题解决方法(Remote access)
- 电脑不能连接远程桌面方法(彻底解决因操作系统带来的问题)
- 遇到动态调用Parameters .AddWithValue()参数类型问题的解决方法
- 关于LR中lrs_accept_connection函数中获取data.ws中端口号问题解决方法
- SQL2005 远程连接问题解决方法
- Win2003远程终端超过最大连接数的解决方法
- 存储过程IN参数疑难问题解决方法
- bitmapData.draw()遇到的小问题以及解决方法
- Fedora22远程连接win8.1一路遇到的问题与解决方法
- 远程连接windows2003 server时提示超过最大连接数的解决方法