【问题标题】:How to manually invoke DSProxyGEN.EXE to generate Delphi DataSnap proxy client?如何手动调用 DSProxyGEN.EXE 生成 Delphi DataSnap 代理客户端?
【发布时间】:2009-11-03 08:10:22
【问题描述】:

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

【问题讨论】:

    标签: delphi delphi-2010 datasnap


    【解决方案1】:

    DSProxyGen 在命令行运行时不给你它的参数并且不响应

    DSProxyGen /?
    

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

    更新:

    从 Delphi XE 到 XE7,DSProxyGen 的源代码作为示例之一包含在其中

    Samples\Delphi\DataSnap\ProxyGenerator
    

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

    source\data\datasnap\proxygen
    

    【讨论】:

    • 您的解决方案听起来有效,但我无法使其有效。这是我所做的: 1. 我将文件夹“C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin”中的 DSProxyGen.exe 重命名为 DSProxyGen.exe.old 2. 然后我尝试生成代理客户端TSQLConnection 上下文菜单中的类,它仍然能够生成单元。 IDE 似乎没有调用 DSProxyGen.exe
    • 有趣。我不确定还能尝试什么。
    • 我尝试运行 exe 以查看是否记录了命令行参数,但没有尝试替换它。有时间我会试一试的。
    • 看我的回答,你可以在没有参数的情况下运行 DSProxyGen.exe(XE 及更高版本)以获得使用帮助。我注意到源代码也包含在 Delphi XE7 及更高版本中:C:\Program Files (x86)\Embarcadero\Studio\15.0\source\data\datasnap\proxygen\DSProxyGen.dproj
    • 我在没有阅读您的回答的情况下进行了更新。你打败了我。
    【解决方案2】:

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

    DSProxyGen 测试.pas

    会生成test.pas

    我找不到在命令行上指定 ConnectionString 选项的方法,但是...

    【讨论】:

    • 似乎它已添加到 Delphi XE 中 :-) ,请参阅我的答案。
    【解决方案3】:

    可以使用 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 工作正常。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 在Delphi XE中,还是一样吗(没有文档,没有源代码)?
      • 运行 Delphi XE 的 DSProxyGen.exe 不带参数获取命令行参数的使用帮助
      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多