成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Delphi初學者應小心的六大問題

開發(fā) 開發(fā)工具
初學Delphi的人,由于各種原因,對Delphi中的許多概念不能很好的理解,并由此帶來了許多的問題,或者是開發(fā)出的程序穩(wěn)性不好,或者是遇到一個問題久思不得其解,還誤以為是Delphi自身的BUG,等等這些,浪費了我們大量的時間、精力,也影響了我們的開發(fā)效率。本文列舉了Delphi初學者應小心的六大問題。

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

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

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

  問題二:將釋放對象的代碼寫在窗體的CLOSE事件中,導致Access Violation…的錯誤。

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

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

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

  問題四:進行數(shù)據(jù)類型轉換時處理不當,犯錯誤最多的就是字符型到數(shù)字/浮點型的轉換。

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

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

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

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

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

【編輯推薦】

  1. Delphi基礎開發(fā)技巧
  2. Delphi編程讀取txt文件數(shù)據(jù)
  3. 如何在Delphi中自動錄入數(shù)據(jù)
  4. 基于Delphi的屏幕抓圖技術的實現(xiàn)
  5. Delphi開發(fā)技術手冊
責任編輯:韓亞珊 來源: 編程愛好者
相關推薦

2012-03-01 13:17:40

Java

2010-09-03 10:26:54

IT人

2010-07-02 11:17:47

繪制UML圖

2009-08-25 09:29:18

維護代碼

2011-07-11 17:45:13

java

2012-02-20 10:11:53

PhoneGap

2011-01-11 08:45:17

JavaScript

2019-07-31 07:08:59

物聯(lián)網(wǎng)企業(yè)IOT

2010-04-13 11:36:01

2020-08-25 10:14:59

JavaScript開發(fā) 技巧

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2019-09-02 08:12:49

物聯(lián)網(wǎng)IOT技術

2011-04-12 10:13:24

2015-11-05 11:20:14

2023-01-17 09:27:18

Python語言

2013-02-20 10:13:38

JavaJava初學者

2010-10-18 09:30:55

2011-01-04 16:05:31

開發(fā)技術

2009-12-24 17:26:00

ADO創(chuàng)建表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: re久久 | 黄色大片视频 | 中文字幕第十页 | 精品国产伦一区二区三区观看体验 | 99久久影院 | 成人午夜影院 | 久久国产精品一区二区三区 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 欧美成年人视频在线观看 | 蜜桃特黄a∨片免费观看 | 中文av网站 | 国产伊人久久久 | 日韩欧美一级精品久久 | 日韩综合在线 | 中文字幕高清免费日韩视频在线 | 岛国毛片| 成人在线视频免费观看 | 欧美在线a| 欧美日韩国产一区二区三区 | 亚洲精品二区 | 好好的日在线视频 | 欧美日韩免费视频 | 国产精品中文字幕在线 | 欧美一区二区精品 | 国产精品久久久久久久午夜片 | 久久精品无码一区二区三区 | 欧美精品成人影院 | 亚洲性视频网站 | 亚洲看片网站 | 久久久精品一区二区三区 | 日韩中文字幕免费 | 大香网伊人 | 天堂va在线观看 | 99小视频 | 91精品国产日韩91久久久久久 | 亚洲成人中文字幕 | 国产一区二区久久 | 国产成人一区二区三区 | 成人黄色三级毛片 | 国产精品视频在线播放 | 日本中文字幕一区 |