我有一个Unit1.pas
(例如),其中我有一个TService
带有 aTIdTCPServer
和 a 的TIdUDPServer
组件,但我希望在不同的文件中实现事件方法,比如UDP.pas
和TCP.pas
. 如果它们是 TService 的一部分,是否有可能?如何?
问问题
270 次
2 回答
3
恐怕你不能在不同的单元中实现它,因为编译单元 (.dcu) 必须包含在其接口中声明的所有方法的实现。
但是可以将实现的某些部分写在单独的文件中,然后将它们(使用{$I
指令)包含到主单元中。
例如,在 Unit1.pas 的实现部分中添加行
{$I TCP.pas}
{$I UDP.pas}
然后你在 TCP.pas 和 UDP.pas 中实现一些方法(当然没有任何unit
orinterface
或implementation
关键字),就像你在implementation
Unit1.pas 的部分内部编写一样。当然,所有方法(“本地”和“包含”)都必须在 Unit1.pas 的接口部分中声明。
通常要包含的文件具有扩展名.inc
.
可能您可能会审查您的设计,以便您没有逻辑上独立的块都在一个类中。也许将服务逻辑与 TCP 和 UDP 逻辑(不同的类,因此不同的单元)分开会导致更优雅的设计。
于 2013-08-06T18:24:37.560 回答
3
一个类不能跨多个单元实现。但是,事件处理程序可以在任何地方实现。
于 2013-08-06T18:21:49.293 回答