我们可以在多个源文件中实现一个对象吗?

时间:2013-08-06 18:18:06

标签: delphi oop

我有一个Unit1.pas(例如)我有一个TService,其中TIdTCPServerTIdUDPServer组件已被删除,但我希望有这个活动在不同文件中实施的方法,例如UDP.pasTCP.pas。是否有可能成为TService的一部分?怎么样?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

我担心你不能在另一个单元中实现它,因为编译单元(.dcu)必须包含在其接口中声明的所有方法的实现。

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

E.g。在Unit1.pas的实现部分中添加行

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

然后你在TCP.pas和UDP.pas中实现了一些方法(当然没有任何unitinterfaceimplementation个关键字),就像你在里面写的一样Unit1.pas的implementation部分。 当然所有方法(都是'local'和'included')必须在Unit1.pas的接口部分声明。

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

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