Delphi統計字數。許多讀者朋友都使用過Windows 的記事本,遺憾的是它沒有統計字數的重要功能,而實現這一功能並不困難,本例制作的即是一個字數統計工具。我們可以直接在左邊的文字區域輸入文字,然後開始統計相關字數,也可以將要統計的文本粘貼到該程序中,然後進行統計。點擊“開始統計”按鈕後,對應文本的字母字數和漢字字數就可以在窗口中的編輯框中顯示出來。
設計思想:本程序利用的主要控件是MainMenu 菜單控件、Memo 控件、Edit 控件和Label 控件。在Delphi 中,每個字符都可以轉換為數值,鍵盤可輸入的字符數值為33~126,數值為127以上的則為未知字符,在本例中可以當作是漢字。每個英文字符占一個字節,每個中文字符占兩個字節,通過對這些數值范圍的統計以及對字節數的統計來完成對中、英文字符個數的統計。
設計步驟:本例中首先為窗體添加各種合適的控件。然後通過Ord()函數將Memo 控件中的所有字符轉換為對應的數值。通過Length()函數獲得Memo 控件中所有字符的字節數。然後通過for I:=1 to length(s) do 的循環來判別各個字節所對應的字符的數值是否在33 至126 之間來確定是否為英文字符,並求出英文字符的總數和中文字符所占字節的總數,中文字符的個數即為它們所占字節數除以2。
1.新建工程:
(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Project1”,點擊“保存”按鈕,保存上面的選項。
2.修改窗口:
(1)激活Form1 窗口,在“屬性”中設置該窗體的Caption 屬性為“字數統計工具”,Color 屬性設置為“clSkyBlue”。
(2)在構件選項板上選擇“標准”頁上的MainMenu 選項,將鼠標移到窗口中點擊,生成菜單MainMenu 控件,用鼠標雙擊該控件,進入菜單編輯窗口。設計如下圖(左圖)所示菜單,並為相關菜單添加熱鍵。
(3)選擇“標准”頁上的Label 選項,在窗體中添加三個Label 標簽,調整其合適的大小和位置。在“屬性”中設置Color 屬性為ClBlack,用鼠標點擊Font 屬性,從其選項列表中設置Color 屬性為clBlack,Caption 屬性分別為“請輸入文字”、“字母字數”和“漢字字數”。
(4)選擇“標准”頁上的Memo 選項,在窗體中添加Memo 控件,調整其合適的大小和位置。在“屬性”面板中設置其Color 屬性為ClMoneyGreen,Name 屬性為“Memo1”,ScrollBars 屬性設置為ssVertical,使得Memo 控件在豎直方向有滾動條。
(5)選擇“標准”頁上的Button 選項,在窗體中合適位置添加三個Button 控件,在“屬性”中設置其Caption 屬性分別為“粘貼文字”、“開始統計”和“退出”。按住Shift鍵,同時選中三個Button 控件,選擇“編輯”菜單下的“對齊”命令,為Button 控件選擇合適的排列對齊方式。
(6)選擇“標准”頁上的Edit 選項,在窗體中合適位置添加兩個Edit 控件。在“屬性”面板中設置其Color 屬性為ClMoneyGreen,Name 分別為“Edit1”和“Edit2”。控件添加完畢後的窗體如右圖所示。
代碼分析:
(1)該程序的關鍵部分是統計Memo 控件中的英文字符和中文字符的個數。這裡首先利用length()函數統計Memo 中文本的字節數,然後利用Ord()函數將Memo 控件中的字符轉換成對應的數值,再對轉換後的數值進行統計。下面是“開始統計”菜單相應的響應事件代碼。
procedure TForm1.N3Click(Sender: TObject); var s:string; i,e,c:integer; begin s:=memo1.Text; e:=0;c:=0; for i:=1 to length(s) do begin if (ord(s[i])>=33)and(ord(s[i])<=126) then //當文本為英文字符時 begin inc(e); //英文字符個數求和 Edit1.Text:=inttostr(e); end else if (ord(s[i])>=127) then //當文本為中文字符時 begin inc(c); Edit2.Text:=inttostr(c div 2); //每個漢字占2 個字節 end; end; end;
(2)接著為“粘貼文字”菜單添加代碼,這只需要將剪貼板上的文本粘貼到Memo控件中即可:
procedure TForm1.N2Click(Sender: TObject); begin memo1.PasteFromClipboard; end;
(3)菜單中的“關於”和“退出”事件的代碼很簡單:
procedure TForm1.A1Click(Sender: TObject); //關於 begin messagedlg(’歡迎使用石氏字數統計工具※網垠工作室※2003 年’,mtinFormation, [mbok],0); end; procedure TForm1.N4Click(Sender: TObject); //退出 begin close; end;
(4)窗體中各個Button 按鈕的響應事件,只要設置成對應各自的菜單即可。
vIEw source