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

如何手动调用DSProxyGEN.EXE生成Delphi DataSnap代理客户端?,delphi,delphi-2010,datasnap,Delphi,Delphi 2010,Datasnap,我正在使用Delphi2010的DataSnap。有一个DSProxyGen.EXE实用程序,允许我们生成代理客户端单元。有人知道如何在命令行中使用此实用程序来生成代理客户端,而不使用TSQLConnection的上下文菜单吗?DSProxyGen在命令行上运行时不会提供其参数,也不会响应 DSProxyGen /? 您可以尝试将其替换为自己的exe(备份!),该exe检测发送的命令行参数(全局CmdLine变量)并将其写入文件。从TSQLConnection的上下文菜单启动它,您应该拥有从命

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

DSProxyGen在命令行上运行时不会提供其参数,也不会响应

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

更新:

从Delphi XE到XE7,DSProxyGen的源代码作为示例之一提供

Samples\Delphi\DataSnap\ProxyGenerator
在Delphi XE8中,它作为源代码的一部分提供

source\data\datasnap\proxygen

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

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

dsproxygentest.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 comp,然后DSProxyGen可以正常工作。

您的解决方案听起来不错,但我无法使其正常工作。以下是我所做的:1。我将文件夹“C:\Program Files(x86)\Embarcadero\RAD Studio\7.0\bin”2中的DSProxyGen.exe重命名为DSProxyGen.exe.old。然后,我尝试从TSQLConnection上下文菜单生成代理客户端类,它仍然能够生成单元。似乎IDE没有调用DSProxyGen.exe。我不确定还要尝试什么。我尝试运行exe以查看是否记录了命令行参数,但没有尝试替换它。当我有时间的时候,我会试一试。看看我的答案,你可以运行DSProxyGen.exe(从XE和更高版本)而无需参数以获得使用帮助。我注意到源代码也包含在Delphi XE7和更高版本中:C:\Program Files(x86)\Embarcadero\Studio\15.0\source\data\datasnap\proxygen\DSProxyGen.dprojI在没有阅读您的答案的情况下进行了更新。在Delphi XE中,它仍然是一样的吗(没有文档,没有源代码)?运行Delphi XE的DSProxyGen.exe,不带参数以获取命令行参数的使用帮助。它已添加到Delphi XE:-),请参阅我的答案。