如何手动调用DSProxyGEN.EXE生成Delphi DataSnap代理客户端?

时间:2009-11-03 08:10:23

标签: delphi delphi-2010 datasnap

我正在使用Delphi 2010的DataSnap。有一个DSProxyGen.EXE实用程序,允许我们生成代理客户端单元。有没有人如何在命令行中使用此实用程序来生成代理客户端而不使用TSQLConnection的上下文菜单?

4 个答案:

答案 0 :(得分:3)

DSProxyGen在命令行运行时不会为您提供参数,并且不响应

DSProxyGen /?

您可以尝试使用自己的exe替换它(进行备份!),以检测发送的命令行参数(全局CmdLine变量)并将它们写入文件。从TSQLConnection的上下文菜单启动它,您应该从命令行调用DSProxyGen。

<强>更新

从Delphi XE到XE7,DSProxyGen的源代码作为样本之一包含在内

Samples\Delphi\DataSnap\ProxyGenerator

在Delphi XE8中,它作为源代码的一部分提供。

source\data\datasnap\proxygen

答案 1 :(得分:2)

不带参数的DSProxyGen.exe使用TCP / IP端口211连接,并使用第一个命令行参数作为文件名。

DSProxyGen test.pas

将生成test.pas

我发现无法在命令行上指定ConnectionString选项,但是......

答案 2 :(得分:2)

可以使用Delphi XE及更高版本的DSProxyGen.exe,例如:

DSProxyGen.exe Proxy.pas
-C:host=localhost;port=8080;communicationprotocol=http

运行不带参数的DSProxyGen.exe 以获取使用帮助。 (/?或/ h等不起作用)

我注意到源代码也包含在Delphi XE7中:

C:\Program Files (x86)\Embarcadero\Studio\15.0\source\data\datasnap\proxygen\DSProxyGen.dproj

请注意,如果您指定了任何传输过滤器(即ZLibCompression,PC1,RSA等)并返回错误,例如“找不到TDBXError:ZLibCompression过滤器”,则它将无效。

我在开发时使用的临时解决方法是添加另一个没有任何传输过滤器的TDSTCPServerTransport组合,然后DSProxyGen正常工作。

答案 3 :(得分:0)

请参阅单元DSProxyDesigner.dcu(不包含源文件,但应位于database \ external \ src \ pas \ datasnap \ proxy \ DSProxyDesigner.pas)。这是在设计时用于生成代理客户端类的单位。我不确定DSProxyGen.exe是否实际使用过,遗憾的是它没有关于命令行参数的文档,但是...