我最近需要将一个旧的 Delphi 6 项目升级到 Delphi 2007。它是一个使用 Indy TidTCPServer 组件的服务器应用程序。我已经遵循了升级到 Indy 10 的所有示例。
该应用程序通过 TCP/IP 与旧的 VB6 应用程序(我们没有代码)接口。我遇到了困难,因为一旦 VB6 应用程序连接,Indy 组件上的 Execute 事件就会触发,但它不会写入任何数据。这会导致应用程序挂起,等待应用程序发送永远不会到达的数据。
原始代码如下所示:
data := AContext.Connection.IOHandler.ReadLn;
if data <> '' then
begin
// do some stuff
end;
我已经尝试了 Indy 示例中的几个代码示例,以及 StackOverlow 上的示例。一个例子是:
AContext.Connection.IOHandler.CheckForDataOnSource(10); 如果不是 AContext.Connection.IOHandler.InputBufferIsEmpty 那么 开始 数据 := AContext.Connection.IOHandler.ReadLn(); 如果数据 <> '' 那么 开始 // 做一些事情 结尾; 结尾;
奇怪的是,当我使用 .NET 客户端访问原始代码时,它可以完美运行。这似乎只是来自 VB6 应用程序的问题。