我们已经从Delphi 7到Delphi 2007移植了一个应用程序 - 以及从Indy 9到Indy 10的服务器和客户端之间的通信。
检查用户名和密码的部分现在给出一些非常奇怪的结果: 如果我在使用Delphi 2007的虚拟机(开发环境)上,我可以登录服务器应用程序没问题。
如果我生成可执行文件并尝试在虚拟机外部运行它,则会收到错误的密码。 检查密码的代码使用TIdTCPConnection.ReadString读取数据 - 对于Delphi 7和a Delphi 2007上的TidTCPConnection.Socket.ReadString。
我猜测这与Delphi 2007版本的ReadString方法的额外参数有关,但是,为什么我可以在调试模式下运行应用程序时登录 - 在Debug中运行服务器或在客户端运行调试但无法连接到我的Delphi 2007环境之外。
我在这里缺少任何DLL或其他文件吗?
任何帮助,甚至指向正确的方向,都非常感激 - 自昨天以来我们一直坚持下去。
EDITED - EDITED - EDITED - EDITED - EDITED - 已编辑:
我已经更改了此问题的标题,并且已经隔离了仅在应用程序的发布版本中发生的问题。 使用调试版本,包括TD32,调试信息,本地符号,调试DCU等,问题就不会发生。
我正在测试发布和调试版本的机器只安装了Delphi 7。 使用Finalbuilder生成可执行文件的程序包含Delphi 7和Delphi 2007(正在使用的编译器版本)。
我有另一个虚拟机,我用来开发Delphi 2007项目 - 在这台机器上生成的任何东西 - 调试版本,也可以正常工作 - 但发布版本 - 没有调试信息,会有相同的密码问题。
答案 0 :(得分:0)
您可以尝试使用OutputDebugString或将密码记录到服务器端的文件中,以确保它正确接收它。
另外,您使用的是最新版本的Indy吗?可能存在与字符串处理有关的修复。
答案 1 :(得分:0)
如果没有看到您的实际代码和数据,这很难诊断出来。最有可能的是,当您从Indy 9切换到10时,您的Indy 10代码实际上并没有使用与Indy 9代码等效的正确功能。请提供更多详细信息。