【问题标题】:Delphi project - debug x release version - problem with Indy libraryDelphi 项目 - 调试 x 发布版本 - Indy 库的问题
【发布时间】:2010-11-03 20:52:05
【问题描述】:

我们将应用程序从 Delphi 7 移植到 Delphi 2007 - 并将服务器和客户端之间的通信从 Indy 9 移植到 Indy 10。

检查用户名和密码的部分现在给出了一些非常奇怪的结果: 如果我在使用 Delphi 2007 的虚拟机(开发环境)上,我可以登录到服务器应用程序没有问题。

如果我生成可执行文件并尝试在虚拟机之外运行它,我会得到错误的密码。 检查密码的代码使用 TIdTCPConnection.ReadString 读取数据 - 对于 Delphi 7 和 Delphi 2007 上的 TidTCPConnection.Socket.ReadString。

我猜想这与 Delphi 2007 版本中 ReadString 方法的额外参数有关,但是,为什么当我在调试模式下运行应用程序时我可以登录 - 在调试模式下运行服务器或客户端调试但无法连接到我的 Delphi 2007 环境之外。

这里有没有我遗漏的 DLL 或其他文件?

任何帮助,即使是指出正确的方向,我们都非常感谢 - 从昨天开始,我们就一直坚持下去。

已编辑 - 已编辑 - 已编辑 - 已编辑 - 已编辑 - 已编辑:

我已更改此问题的标题,并已隔离仅在应用程序的发布版本中发生的问题。 使用调试版本,包括 TD32、调试信息、本地符号、调试 DCU 等,问题就不会发生。

我正在测试发布和调试版本的机器只安装了 Delphi 7。 使用 Finalbuilder 生成可执行文件的版本有 Delphi 7 和 Delphi 2007(正在使用的编译器版本)。

我有另一台虚拟机,我用它来开发 Delphi 2007 项目 - 在这台机器上生成的任何东西 - 调试版本,也可以正常工作 - 但发布版本 - 没有调试信息,会有同样的密码问题。

【问题讨论】:

  • 我建议您详细说明 I get a wrong password 。和你发的有区别吗?有什么不同?
  • 例程尝试比较从客户端发送到服务器的密码 - 它做了一些花哨的事情,如生成随机字符串、混合然后比较 - 但我在密码读取上隔离了问题 - 它不同的价值...我正在遵循 Alan 的建议,看看情况如何...
  • 如何将问题更改为您的建议?
  • 在发行版中,您可以将发送的密码和接收的密码记录到纯文本文件中。我建议您向我们展示您发送的内容和收到的内容。
  • 我已经进一步隔离了这个问题。对于内存管理,我们使用 FastMM——不是捆绑版本,而是最新版本。每当 FullDebug 指令设置为 false 时,就会出现问题。

标签: delphi delphi-2007 indy indy10


【解决方案1】:

您可以尝试使用 OutputDebugString 或将密码记录到服务器端的文件中,以确保其正确接收。

另外,您使用的是最新版本的 Indy 吗?可能存在与字符串处理有关的修复。

【讨论】:

    【解决方案2】:

    如果不查看您的实际代码和数据,这真的很难诊断。最有可能的是,当您从 Indy 9 切换到 10 时,您的 Indy 10 代码实际上并未使用与您的 Indy 9 代码等效的正确功能。请提供更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2010-10-27
      • 2020-08-02
      相关资源
      最近更新 更多