我正在使用 Delphi 2010 的 DataSnap。有一个 DSProxyGen.EXE 实用程序可以让我们生成代理客户端单元。有人如何在不使用 TSQLConnection 的上下文菜单的情况下在命令行中使用此实用程序来生成代理客户端?
4 回答
DSProxyGen 在命令行运行时不给你它的参数并且不响应
DSProxyGen /?
您可以尝试用您自己的 exe(进行备份!)替换它,该 exe 检测发送了哪些命令行参数(全局 CmdLine 变量)并将它们写入文件。从 TSQLConnection 的上下文菜单启动它,您应该拥有从命令行调用 DSProxyGen 所需的内容。
更新:
从 Delphi XE 到 XE7,DSProxyGen 的源代码作为示例之一包含在内
Samples\Delphi\DataSnap\ProxyGenerator
在 Delphi XE8 中,它作为源代码的一部分提供。
source\data\datasnap\proxygen
不带参数的 DSProxyGen.exe 使用 TCP/IP 端口 211 进行连接,并使用第一个命令行参数作为文件名。
DSProxyGen 测试.pas
会生成test.pas
我发现无法在命令行上指定 ConnectionString 选项,但是...
使用 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 Filter not found”。
我在开发期间使用的临时解决方法是添加另一个没有任何传输过滤器的 TDSTCPServerTransport 组件,然后 DSProxyGen 工作正常。
请参阅 DSProxyDesigner.dcu 单元(不包括其源文件,但应位于 database\external\src\pas\datasnap\proxy\DSProxyDesigner.pas)。这是在设计时用于生成代理客户端类的单元。我不确定 DSProxyGen.exe 是否实际使用过,遗憾的是没有关于其命令行参数的文档,但是......