Add與Use的差別? |
答題得分者是:P.D.
|
Edward Chen
一般會員 發表:28 回覆:21 積分:9 註冊:2004-07-27 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 我的疑問是在Compile時有什麼差別 1.將一個Unit(pas)檔Add到Project中 2.在程式中Use一個Unit而不Add 兩者結果都是可以執行,但是出來的執行檔大小好像有點差距 感謝這個網站Add 是將這個 pas 加入到專案中, 所以使用Add, 一定要有pas程式, 當編譯時系統會利用這個pas產生dcu, 然後一併加入到exe內 uses 只是使用一個已經產生好的dcu, 編譯時系統是把這個dcu加入到exe內, 也就是說, 要使用這個unit的程式不一定要有pas, 諸如外面好多3'rd party軟體, 很多只提供dcu 但這兩者最大的差別就是, 如果你只有dcu的話, 就會有版本的差異, 就是說萬一你拿到的dcu是dephi7編譯出來的, 你就無法使用在delphi5的版本, 但如果你有pas, 就可以讓系統重新編譯成你的系統版本 大概就是這樣的意思啦! |
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
Edward 大大, 如果你的專案中有 UnitB,且 UnitB 會用到 UnitA 的內容,但 UnitA 並未加入到專案,根據您所說 "兩者結果都是可以執行,但是出來的執行檔大小好像有點差距" ,那麼就表示你分別試用過以下兩種方法:
1.只把 UnitA 用 Add 加進來。
2.只在 UnitB 中 uses UnitA。 照您所說,兩個方法都可以執行,沒有問題。但我卻有疑問:
針對2 <--- 如果 UnitB 不 uses UnitA ,UnitB 怎麼能用?
針對1 <--- 如果 UnitA 不在專案中,UnitB 怎麼能 uses UnitA ? 我想你的 UnitA 跟 UnitB 根本就沒有相依關係,甚至整個 UnitA 的內容都不會被專案中其他單元使用到,因此,無論你有沒有把 UnitA 加入專案,無論你有沒有在 UnitB 中 uses UnitA ,或者不 add 也不 uses,甚至又 add 又 uses,最終執行結果當然會一樣,因為 UnitA 本來就跟此專案毫無關連! 另外請問其他大大,是不是至起碼也要把單元檔加入專案後,才能進一步在其他單元檔中 uses 那個單元檔? 謝謝
|
Edward Chen
一般會員 發表:28 回覆:21 積分:9 註冊:2004-07-27 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: cancer所言甚是。其實這個題目提的不是很好。 小弟學Delphi不久,雖然加入開發的行列,但是有些下盤功夫不穩,此次所提的問題P.D.恰好就是我需要的答案。其實小弟對於dcu的瞭解實在是有限的,諸如: 1.pas怎麼不直接Compile成執行檔,而要多一層dcu? 2.不同版本的delphi產生的dcu不能互通豈不綁住發展工具? 3.是否有其他的工具可以產生dcu檔給Delphi來use? 等等…問題 感謝這個網站這就是Delphi提供Package及bpl的最大功臣, 假想 你幫客戶開發一套程式, 而客戶要求要有source code, 如果整套程式當中有包含你自己的工具程式在內, 按你的想法, 你得把你自己的工具源碼也提供給客戶對方才能編譯程式, 如果今天有一個dcu做中介, 我可以把屬於客戶段開發的源碼給他們, 同時把程式需要用到但是屬於我自己的源碼以dcu方式包給客戶, 一來客戶可以完成自己的編譯, 一方面你也不用擔心自己的源碼會被人抄用, 諸如此類, 外面很多工具軟體都有提供試用版都是如此做, 對設計者而言可能是有些受限制, 但對開發者來說這可是一個永續的經營, 以後你也會成為開發者, 相信你會明白這點的! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |