我有一個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