日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Delphi初學(xué)者應(yīng)小心的六大問題

本文是筆者結(jié)合自己多年Delphi開發(fā)經(jīng)驗(yàn),列舉了Delphi初學(xué)者應(yīng)小心的六大問題。

成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、烏審網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為烏審等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

問題一:對(duì)類的概念理解不到位,程序開發(fā)中不能靈活運(yùn)用。請(qǐng)看下面的程序:

 
 
 
  1.  unit Unit1;   
  2.   interface  
  3.   uses   
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   
  5.   Dialogs, StdCtrls, shellApi;   
  6.   type   
  7.   TForm1 = class(TForm)   
  8.   Button1: TButton;   
  9.   private  
  10.   { Private declarations }   
  11.   public  
  12.   { Public declarations }   
  13.   end;   
  14.   var   
  15.   Form1: TForm1;   
  16.   implementation   
  17.   uses CommonUni;  

在DelphiI中新建一個(gè)程序,然后添加一個(gè)按鈕,就得到了下面這段程序。這應(yīng)該是大家相當(dāng)熟悉的一段程序,可也就是這段程序,讓許多的人在做開發(fā)很長時(shí)間后,還不能很好理解。 該程序可分為三個(gè)個(gè)部分:第一部分,單元頭(從起始位置到TYPE之前);第二部分(從TYPE到END的部分),定義了一個(gè)從Tform繼承過來的窗體類,它包含一個(gè)Tbuttton類型的成員。最后一部分(Var到結(jié)束的部分),定義了一個(gè)Tform1類型的變量。問題就出在這里了,許多人誤以為這最后一段也是窗體類的一部分,在該窗體類中經(jīng)常寫出這樣的代碼,F(xiàn)orm1.caption = ’窗體標(biāo)題’,導(dǎo)致程序運(yùn)行時(shí)得不到所要的結(jié)果。其實(shí)最后一部分根本就屬于窗體類的定義,它們不過是在同一個(gè)UNIT中而已,所以代碼應(yīng)該這樣寫:self.caption = ’窗體標(biāo)題’;

問題二:將釋放對(duì)象的代碼寫在窗體的CLOSE事件中,導(dǎo)致Access Violation…的錯(cuò)誤。

一個(gè)窗體的關(guān)閉(CLOSE)與窗體的析構(gòu)(Destory),在系統(tǒng)處理上是有區(qū)別的,當(dāng)一個(gè)窗體關(guān)閉時(shí),窗體實(shí)際上只是隱藏起來了,它占用的資源并未從內(nèi)存中釋放了,我們還是可訪問到窗體中的數(shù)據(jù);而當(dāng)窗體響應(yīng)DESTORY事件時(shí),窗體不僅僅是隱藏起來了,而且占用的系統(tǒng)資源也釋放出來了。因此,如果一個(gè)窗體關(guān)閉后,我們還想訪里面的對(duì)象,就應(yīng)該將這些對(duì)象的FREE代碼寫的窗體的(DESTORY)事件中。

問題三:不加區(qū)別地使用String與shortString數(shù)據(jù)類型。

String類型與shortString類型是有區(qū)別的,在默認(rèn)的情況下(取決于$H開關(guān)),如果你將一個(gè)變量定義為string類型,那么會(huì)被處理成一個(gè)ANSIString類型。這種類型是動(dòng)態(tài)分配內(nèi)存的,以NULL為結(jié)尾,最大長度為4G,而shortString的最大長度是不能超過255個(gè)字符的。由于ANSIstring是生存期自管理類型的數(shù)據(jù),這意昧著這種類型的數(shù)據(jù)需要更多的系統(tǒng)開銷,所以在程序開發(fā)中,shortString能滿足要求的話,就盡量使用它,以提高程序的運(yùn)行速度。

問題四:進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換時(shí)處理不當(dāng),犯錯(cuò)誤最多的就是字符型到數(shù)字/浮點(diǎn)型的轉(zhuǎn)換。

當(dāng)將一個(gè)字符型數(shù)據(jù)轉(zhuǎn)換為整型時(shí),我們經(jīng)常這樣寫 I := StrToInt(aEdit.Text); 表面上看這一句,沒有任何問題,函數(shù)的使用,格式的寫法,都是正確的??捎幸环N情況我們卻沒有考慮到,如果用戶在aEdit文本框中輸入的不是數(shù)字文本的話,會(huì)怎么樣呢?調(diào)用還會(huì)成功嗎?顯然是不會(huì)的,系統(tǒng)肯定會(huì)彈出一個(gè)英文的錯(cuò)誤,讓我們的用戶不知所措的。正確的寫法是:I := StrToIntDef(aEdit.Text, 0); 這樣當(dāng)轉(zhuǎn)換不成功時(shí),第二個(gè)參數(shù)就會(huì)賦給I。類似的函數(shù)還有strToInt64Def,StrToFloatDef等等。

問題五:單元引用的問題。使用那個(gè)函數(shù),就一定要引用函數(shù)所在的單元。

比如在程序開發(fā)中我們要用到一個(gè)API函數(shù)ExtractIconEx(從程序或是文件中獲得一個(gè)圖標(biāo)),那么就一要在它的USES中把單元shellApi加入進(jìn)來,否則是不能通過編譯了。類似的情況還有很多,我們常常使用幫助文檔,從中查找需要的函數(shù),可當(dāng)程序編譯時(shí),卻通不過,為什么呢?就是因?yàn)闆]有在USES中引用函數(shù)所在的單元。這個(gè)問題初學(xué)者犯得最多,應(yīng)該加倍注意。

問題六:避免循環(huán)引用,盡可能通過第三個(gè)單元實(shí)現(xiàn)。如果確實(shí)不可避免,應(yīng)在不同位置進(jìn)行引用。所謂循環(huán)引用就是A單元引用了B單元,而反過來,B單元又引用了A單元,產(chǎn)生循環(huán)。我們還看上面的那一段程序,在interface的下面有一個(gè)USES語句,而在implementation的下面,又有一個(gè)USES語句。循環(huán)如果確實(shí)不可避免,那么就應(yīng)該在將A單元中的引用寫在第一個(gè)USES語句中,而將B單元中的引用寫在第二個(gè)USES語句中。

附言:以上只是筆者從事DelphiI開發(fā)多年,得出的一些經(jīng)驗(yàn)。希望能夠幫助初學(xué)DelphiI的朋友,盡量避免這些錯(cuò)誤,少走彎路。

【編輯推薦】

  1. Delphi基礎(chǔ)開發(fā)技巧
  2. Delphi編程讀取txt文件數(shù)據(jù)
  3. 如何在Delphi中自動(dòng)錄入數(shù)據(jù)
  4. 基于Delphi的屏幕抓圖技術(shù)的實(shí)現(xiàn)
  5. Delphi開發(fā)技術(shù)手冊(cè)

網(wǎng)站題目:Delphi初學(xué)者應(yīng)小心的六大問題
轉(zhuǎn)載來于:http://m.5511xx.com/article/djihesi.html