1. delphi7 castalia 怎麼卸載
我的Delphi開發經驗談
--------
開發環境
--------
Delphi 7是一個很經典的版本,在Win2000/XP下推薦安裝Delphi 7來開發軟體,在Vista下推薦使用Delphi 2007開發軟體。安裝好Delphi 7後,應立即安裝Delphi 7 Update Pack 1,Delphi 2007則建議盡量安裝最新的版本。工欲善其事,必先利其器,為了提升開發效率,為了能更加得心應手的處理接下來的開發工作,我們有必要安裝一些有用的開發輔助工具(Delphi將此類插件以Expert命名)。首先推薦的是DelForExp這個源代碼格式化工具,集成在IDE里,使用相當方便。即使我所寫代碼的風格非常好,但是還是免不了閱讀某些人寫的亂七八糟的代碼,這時DelForExp就能派上用場了,1秒鍾就能讓代碼能看上去順眼多了。GExperts曾經是一個非常出名的工具,可現在都不怎麼更新了,裡面有幾個功能還是值得一用,比如Grep Search, Replace Components, Code Proofreader等。強烈推薦安裝CnPack IDE 專家包,相信我,它會讓你的Delphi更好用。Delphi 7是不支持重構的,因此我還建議安裝Castalia,這個工具中某些功能還是很不錯的。CodeRush一直都是Delphi下最強大的工具,可是由於安裝後比較容易與其他工具沖突,讓人不得不慧枯猛忍痛割愛。Delphi 7下建議安裝Delphi SpeedUp這個IDE加速工具,其原理是在Delphi啟動前,替換RTL的函數為來自FastCode工程前橋的執行效率更高的函數。ModelMaker Code Explorer為Delphi增加了一些方便重構代碼的功能,值得安裝使用。
第一次啟動Delphi 7,關閉設置中的Delphi Direct以禁止Delphi訪問Borland伺服器,勾選Show Compiler Progress選項以便編譯程序時可以看見編譯進度,然後分別設置所安裝的專家的選項,再對Delphi的窗體布局按自己的喜好調整,調整好瞭然後將其保存為默認布局。關閉工程,設置好默認的工程選項。接下來就可以安裝控制項包了。如果是在項目小組中配置開發環境,因為可能所需的控制項比較多,安裝比較麻煩,建議由一個有經驗的開發人員將那些散裝控制項預編譯後做成安裝程序供小組其他成員安裝。
--------
軟體設計
--------
在整理自己的思路的時候可以採用PersonalBrain來畫思維導圖,這是一個拓展腦力,激發思維的一個活動,並且將自敗磨己的想法全部記錄下來,並在整理的過程當中可以發現內在聯系與更多的問題,在接下來的設計中加以考慮。做設計需要畫圖,除了Visio外,我推薦EDraw Soft Diagrammer。Enterprise Architect用來做UML設計是很好的選擇。ModelMaker為Delphi增加UML支持,可以保持設計與代碼雙向同步,非常不錯的工具。
作為一個Delphi產品的設計人員,應該具有廣闊的視野,熟悉.NET、Java下優秀的框架設計,熟悉Delphi類庫的源代碼,其中總有我們可以借鑒與學習的地方,根據公司的實際情況以及具體需求有選擇的在產品開發中進行實踐,這樣才能做出高質量的產品。
--------
軟體開發
--------
數據結構是軟體開發中的基礎,在開發項目前,你一定應該准備好如TStack, THashtable, TQueue, TCollection, TMap, TBag, TSet, TAssociation之類的容器類,然後在以後的開發中根據需要選用合適的數據結構,避免不要直接使用指針與TList。如有需要,可以先將TStream,TRegistry等常用類繼承實現,也就是做一個包裝,這樣就為以後的開發中就留下了一個可以隨時加入擴展的介面。
網上也能找到DGL(The Delphi Generic Library)來為Delphi增加泛型支持,實際上也可以稱之為一個模板庫,但是這個庫我也只使用過一次,網上也未見其他人使用,因此到底是否可靠還有待於實踐驗證。說到模板庫,我還想起一個DEEX,這是一個預處理器,可以讓你使用類似STL相似的語法,其中也內置了DTL(Delphi Template Library)庫。
關於AOP,Delphi這方面完全不能與Java或.NET相比,所能用的技術也就只能是動態代理或Hook來實現,雖然也出現了MeAOP之類的框架,我還是建議從設計上去解決這類AOP的需求,或者也可以考慮採用在DailyBuild的時候做編譯前預處理(比如設計成{LogAction}類似於.NET的屬性特性來修飾特定的方法,當然預處理器必須自己開發)。
與開發有關的文件都應該被管理起來,而不僅僅是只管理代碼,一開始就要做好目錄規劃,特別要注意將代碼與運行時所需的資源分隔開,一般來說,可以分為Doc,Src,Res,Misc四大類,Doc存放全部相關的文檔,裡面建立具體的分類目錄;Src存放編譯所需的文件,比如源代碼和幫助的源文件;Res存放製作安裝包與發布軟體所需的各種資源文件,比如圖片、網頁等。這樣做將為接下來的DailyBuild做好准備。
Delphi沒有Package與Namespace的概念,因此只能利用目錄上的物理劃分代替邏輯劃分,將同一性質的單元放置到同一目錄,根據需要再劃分更多子目錄來存放單元。
程序的界面上的控制項最好都重新規范命名,切忌在代碼中出現類似Label1.txt := 'abc';之類的代碼。開發者應該熟悉Delphi所提供的系統函數,切忌自己去實現Delphi已經提供了的函數,一則這樣做的效率不高,二則你自己所寫的代碼沒有經過完全的測試,很有可能存在未妥善處理的情況。我們不提倡重復發明輪子,特別是在正式的開發中這樣做。開發中把握面向對象設計的原則:單一職責、開放封閉、里氏替換、依賴倒置、介面隔離、高內聚低耦合。代碼就是最好的注釋,變數命名盡可能的表達其本身的意義,最好的注釋就是不需要注釋也能很容易的看懂代碼,只在需要的地方加上注釋。開發人員應該將自己所寫的代碼視之為供別人使用的產品,不要隨意的將方法聲明為公開方法,只提供給別人需要的方法,每個公用方法上都應該用注釋標明其功能。程序編譯過程中出現的任何警告或提示都應該認真對待,爭取消除每一個警告或提示,這樣做是避免一些代碼中可能存在的隱患。
有經驗的程序員完成特定的功能會充分考慮可變的情況,將這些地方提取出來,定義為方法參數或者從配置文件中讀取,這樣即使需求發生變化,也能輕松應對。要寫出易維護的程序應該在軟體配置化和程序動態化上下功夫。特別提一提程序動態化,現在開發網路游戲的很多,而且一般都會用到腳本引擎Lua來實現部分邏輯,這樣在開發後期的調整相對變得輕松一點,以後在伺服器上做修改也不會要求重新啟動程序。當然在一般的項目或產品中一樣可以考慮使用腳本引擎,當然不一定要用Lua,還可以有很多別的選擇。比如:DelphiWebScript,RemObjects Pascal Script,AUTOMA atPASCAL SCRIPTER,FastScript,Innerfuse Pascal Script。如果還有更高的要求,還可以考慮利用COCO/R (ParserBuilder)來實現自己的語法解析器。
開發中通常會遇到自己不能解決的問題,要知道你遇到的問題別人可能早就遇到過並解決,因此請教他人或者請教Google通常是最好的選擇。上論壇提問是沒有效率的方法。本地的知識庫也能派上用場,比如www.delphi3000.com的離線庫CodeFinder,大富翁離線資料庫,
--------
控制項開發
--------
控制項分為不可視控制項與可視控制項,不可視控制項其實與一般的類沒什麼太大的區別,只需要公布需要公布的屬性為Published,如有需要也可以設計並注冊自己的屬性編輯器。
開發控制項也有專業的開發工具Eagle CDK和Eagle reAct,您不僅可以很方便的創建類,還可以在運行期測試控制項,可以很方便的修改屬性,即時看到效果,大大提高了開發效率。
--------
軟體破解
--------
愈來愈多的開發者開始採用RSA來作為注冊的加密演算法,效果還算不錯,雖然仍不能防止被爆破,但是至少不會出現(內存)注冊機。對軟體加殼也不是什麼防彈衣,對於有經驗的破解者幾分鍾就可以用OllyDbg從內存Dump(先用Process Explorer殺掉屏蔽調試工具的線程),接著就是用Import REConstructor修復IAT,再用Lord PE對EXE進行優化。
DeDe可以讓破解者看到程序內的資源,事件,既可以靜態分析,也可以在OllyDbg中對分析出的地址進行動態調試。
破解Delphi控制項當然也可以用DeDe,但是我們有更好的選擇,那就是DCUcu與Dcu2Pas,可以將Dcu直接反編譯成匯編代碼,通過靜態分析其中的字元串以及調用的API,破解真的是很容易。
只有做到知己知彼,才能做到有的放矢,反破解就是做到以最小的保護代價來使得破解者付出極大的破解行動。
--------