1

我有一个Unit1.pas(例如),其中我有一个TService带有 aTIdTCPServer和 a 的TIdUDPServer组件,但我希望在不同的文件中实现事件方法,比如UDP.pasTCP.pas. 如果它们是 TService 的一部分,是否有可能?如何?

4

2 回答 2

3

恐怕你不能在不同的单元中实现它,因为编译单元 (.dcu) 必须包含在其接口中声明的所有方法的实现。

但是可以将实现的某些部分写在单独的文件中,然后将它们(使用{$I指令)包含到主单元中。

例如,在 Unit1.pas 的实现部分中添加行

{$I TCP.pas}
{$I UDP.pas}

然后你在 TCP.pas 和 UDP.pas 中实现一些方法(当然没有任何unitorinterfaceimplementation关键字),就像你在implementationUnit1.pas 的部分内部编写一样。当然,所有方法(“本地”和“包含”)都必须在 Unit1.pas 的接口部分中声明。

通常要包含的文件具有扩展名.inc.

可能您可能会审查您的设计,以便您没有逻辑上独立的块都在一个类中。也许将服务逻辑与 TCP 和 UDP 逻辑(不同的类,因此不同的单元)分开会导致更优雅的设计。

于 2013-08-06T18:24:37.560 回答
3

一个类不能跨多个单元实现。但是,事件处理程序可以在任何地方实现。

于 2013-08-06T18:21:49.293 回答