【发布时间】:2009-11-03 08:10:22
【问题描述】:
我正在使用 Delphi 2010 的 DataSnap。有一个 DSProxyGen.EXE 实用程序可以让我们生成代理客户端单元。有人如何在命令行中使用此实用程序来生成代理客户端而不使用 TSQLConnection 的上下文菜单?
【问题讨论】:
标签: delphi delphi-2010 datasnap
我正在使用 Delphi 2010 的 DataSnap。有一个 DSProxyGen.EXE 实用程序可以让我们生成代理客户端单元。有人如何在命令行中使用此实用程序来生成代理客户端而不使用 TSQLConnection 的上下文菜单?
【问题讨论】:
标签: delphi delphi-2010 datasnap
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 是否真的被使用过,遗憾的是没有关于它的命令行参数的文档,但是......
【讨论】: