線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1180
推到 Plurk!
推到 Facebook!

為什麼多名稱空間有紅色錯誤及其他webform 不能夠uses它們?怪!

答題得分者是:wodahs
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-18 10:43:00 IP:203.204.xxx.xxx 未訂閱
這些做法在C#中可以做到,唯獨PASCAL 不能做到?! .建立(多)namespace 發表人 - ATEIN 於 2005/02/18  10:45:45 二.uses (多)namespace DHM 發表人 - ATEIN 於 2005/02/18 10:50:38
------
ATEIN
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-18 18:08:37 IP:61.231.xxx.xxx 未訂閱
第一部份: 出現紅色是因為,IDE看到.end後面出現程式碼的警告,Compiler會忽略.end後面的敘述,所以不是只針對unit敘述,你可以看看編譯的結果應該只有.end前的宣告類別有被編譯來驗證. 第二部份: 因為第一部份編譯結果裡沒有編譯後面的敘述,想當然使用/引用不到不存在的類別或Namespace. PS:建議作法,應該分開成幾個檔案分別撰寫. Wodahs 發表人 - wodahs 於 2005/02/18 18:10:35
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-18 18:18:00 IP:203.204.xxx.xxx 未訂閱
如果要分開來撰寫的話,那麼在單一的.pas 的 Multi Namespace 的機制就無法達到如C# 的單一CS Multi Namespace 目的。 DHM
------
ATEIN
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-18 18:50:02 IP:61.231.xxx.xxx 未訂閱
當初在D8關於Namespace是一個問題(ide compiler限制),後來2005加上這個機制,而Namespace的來源即是檔名部份不知2006會不會改,Delphi檔名與unit的關係是源於傳統.單一檔的話,主要是未來IDE/Delphi.Net Compiler可以支援即可.非標準.net compiler的限制. 現在標準的作法是: A檔:(InfoLight.Lib1.MyPub.pas) unit InfoLight.Lib1.MyPub .... B檔:(InfoLight.Lib1.MyTest.pas) unit InfoLight.Lib1.MyTest .... C檔:(InfoLight.Lib2.Test.pas) unit InfoLight.Lib2.Test .... 所以一個Lib裏會有上面三個Namespace. Wodahs
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-18 19:05:58 IP:203.204.xxx.xxx 未訂閱
如此一來,delphi中就沒有一個.pas 多個namespace 的功能了 delphic# .cs卻有這樣的功能,->多個namespace 但李 維大師 回答我:可以這樣做,...但不是有單一pas的限制嗎? unit MyCompany.Proj2.RD1; interface type TMyClass = class(System.Object) private { Private declarations } public { Public declarations } end; TMyClass1 = class(System.Object) private { Private declarations } public { Public declarations } end; unit MyCompany.Proj1; interface type TMyClass = class(system.Object) private { Private declarations } public { Public declarations } end; TMyClass1 = class(system.Object) private { Private declarations } public { Public declarations } end; 李維大師的沒有這限制?奇怪? DHM
------
ATEIN
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-18 23:28:25 IP:61.62.xxx.xxx 未訂閱
Delphi.Net的IDE/Compiler一直在發展,我對於Delphi.NET並不熟,沒有特別研究,可能有特別的寫法可以"技巧"性讓Compiler可以編譯,或是Spec是把幾個檔案寫在一起說明,不是指再同一個檔案(我自己想的,不要太認真),其實只要與C#一樣,把Namespace與檔名的關聯截斷(與C#),或新增/修改IDE編譯的功能偷偷轉換應該可以達到(例如Delphi.Net ASP.NET也是偷偷做手腳,偷用C#的Compiler(csc)幫忙作一部分事情,可從行程監控看出呼叫的命命列),可能還是直接請教李維大師比較快(我只因緣景仰他的尊容一次,得幸匆匆跟他聊幾句話,不熟,不要叫我問 :P);不過,個人認為這種寫法應該是一種"IDE技巧"不是一種"好技術",因其打壞了Namespace部份立意,讓程式分割,管理,維護變得更複雜,我反而建議,把相同Namespace分寫成不同檔案,增加分割性,提高管理分類,而不建議把一堆不是很相關的東西放在一起,(如果相關,應該儘可能放在同一個Namespace比較好).以上是個人淺見,僅供參考. Wodahs 發表人 - wodahs 於 2005/02/18 23:29:20 發表人 - wodahs 於 2005/02/18 23:49:56
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-20 10:29:36 IP:163.17.xxx.xxx 未訂閱
話雖說如此分開建立namespace by files,但若可以,以單一個CS管理整合所有namespace 一來可以集中撰寫 二來可以集中來使用及修改不是很好嗎?! 為何要限定一個PAS 只能有一個NAMESPACE,而非MULTI-NAMESPACE?! C# 就不錯,有MULTI-NAMESPACE. DHM
------
ATEIN
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-20 13:57:28 IP:61.62.xxx.xxx 未訂閱
我自己不太熟Delphi,也不是科班出身,半路出家,所以關於它發展的淵源,可能要請教大師,不過,每個Spec當初訂定一定有他希望簡化或解決的問題,可能是簡化編譯器Loading,RTTI....(上面是我自己亂想,不要認真),把它當作歷史就好了,如果大家真的有需求,之後會再硬觀眾要求些修正,例如Namespace於D8->D2005不就硬需求改善了嗎?大家多去QA 投票吧. 另外,關於您提到的兩個優點,可能會因專案規模,分工規劃等不同評價. 例如,如果是龐大架構,把不同Namespace寫在一起,可能maintain會比較複雜,即使相同的Namespace,也是蠻麻煩的,再者,如果是分工的話,總不能其他人Check out改的話,大家只能枯等,這樣開發團隊效能會打點折扣.其實您如果留意一些大師開發的程式,她們甚至把類別分得非常散,每個檔案大多不到20行.我想她們一定有他們的考量. 以前大家可能覺得一個功能在一個程式裡撰寫即可,不需要再分割副程式,後來規模大,複雜度高,重用需求,Unit test... 觀念上也漸漸可以接受分寫成許多副程式.甚而出現一個不成文的習慣,每個好的副程式儘不要超過20行code,因此,個人建議應依專案的特性選擇分割方法.有時邏輯分割會決定專案的良窳. 像C# 2.0出現分散實作概念的功能,可以把一個類別分寫到不同檔案實作,他主要目的可能並不是想解決特別管理的問題,也不是要大家都如此寫,但對於Template Code-Gen卻提供不錯的邊際效益(個人亂想,您還是問一下科班的:)). Wodahs 發表人 - wodahs 於 2005/02/20 15:33:15 發表人 - wodahs 於 2005/02/20 15:35:27
系統時間:2024-05-12 22:27:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!