我有一个Unit1.pas
(例如),我有一个TService
与TIdTCPServer
和TIdUDPServer
组件插入,但我想在不同的文件中实现事件方法,如UDP.pas
和TCP.pas
。他们是否可能是TService的一部分?怎么样?我们可以在多个源文件中实现一个对象吗?
1
A
回答
3
3
恐怕你不能在不同的单元中实现它,因为编译单元(.dcu)必须包含在其接口中声明的所有方法的实现。
但是可以将实现的某些部分写入单独的文件,然后将它们(使用{$I
指令)包含到主单元中。
E.g.在Unit1.pas的实现部分添加行
{$I TCP.pas}
{$I UDP.pas}
,然后您实现在TCP.pas和UDP.pas一些方法(当然没有任何unit
或interface
或implementation
关键字),就好像你正在写入Unit1.pas的implementation
部分。 当然,所有的方法('local'和'included')都必须在Unit1.pas的接口部分中声明。
通常要包含的文件的扩展名为.inc
。
也许你可能会检查你的设计,这样你就没有逻辑上独立的块在一个类中。也许将业务逻辑与TCP和UDP逻辑(不同的类别,因此不同的单元)分开将导致更优雅的设计。
相关问题
- 1. 我们可以在jsp中实现一个接口吗?
- 2. 我们可以在休眠中有多个cfg文件吗?
- 3. 我们可以在另一个DomDocument对象中嵌套DomDocument对象吗?
- 4. iPhone:我可以将ViewController的实现分成多个文件吗?
- 5. 我可以在同一个json文件中引用另一个对象中的一个json对象吗?
- 6. 我们可以改变一个函数的实现吗?
- 7. 我们可以在apk文件中捆绑一个目录吗?
- 8. 我们可以在android中打开一个swf文件吗?
- 9. JPA2:我们可以在实体中使用多个@ElementCollection吗?
- 10. 在java中,我可以在一个文件中有多个类/对象?
- 11. 我可以在JavaScript中包含另一个源文件吗?
- 12. 我可以注册一个对象吗?
- 13. 我们可以在c#中使用接口实现多态吗?
- 14. 我们可以在struct中实现多态吗?
- 15. 我可以在Solr中使用多个数据源的一个实体吗?
- 16. 我们可以重用一个Gson对象吗?
- 17. 我们可以设置一个类的对象的属性吗?
- 18. 我们可以创建一个接口的对象吗?
- 19. PHP:我们可以排列一个对象吗?
- 20. 我们可以说指针值指定了一个对象吗?
- 21. 你可以在一个Using块中处理多个对象吗?
- 22. 我可以在另一个EJSON对象中嵌入一个EJSON对象吗?
- 23. 我可以保存一个对象到app.config文件吗?
- 24. 组件的整体实现可以分为两个对象吗?
- 25. 我可以在.h文件中的C#中实现一个接口吗?
- 26. 我们可以为同一对表有多个连接表吗?
- 27. 我可以在C++中实现多个回调接口吗?
- 28. 我可以在同一个项目中使用多个JSF实现吗?
- 29. 我们可以有一个在Java中实现两个或多个接口的字段吗?
- 30. 我们可以克隆/复制一个Outlook.NameSpace实例的对象吗?
对于可读性来说,分散在不同单位的方法不会是一个严重的打击吗? – alcalde