程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB編程步步高-代碼效率篇

VB編程步步高-代碼效率篇

編輯:VB綜合教程

  了解對象的類型

  如果你想知道一個對象是否是特殊的類型,請編寫下面的代碼:

  If TypeOf obj Is ListItem Then ...

  如果想得到對象類型的名字,使用:

  MsgBox "The item is a " & TypeName(obj)

  控制長時間的循環

  當程序陷入一個很長時間的循環中時,你就不可能點擊任何一個命令按鈕或者按鍵。這樣對於用戶來說,就很不好控制。或許用戶不想再執行循環,通過點擊Cancel按鈕退出呢?怎麼解決這個問題?答案是:使用DoEvents命令!就是說,在循環的開始執行DoEvents命令,就象下面的代碼一樣:

  

Dim i As Long
  
        For i = 1 To 1000000
DoEvents
...
  
        Next i

  實際上,DoEvents命令並不需要放置在第1行,將它放在循環中的任何地方都可以。這樣做後,程序的其他部分,比如一個結束循環的命令按鈕,就又機會接受點擊事件了。

  使長循環運行更快

  我發現,一般情況下,使用API函數GetInputState來檢查程序輸入隊列的數值是較好的。我不知道為什麼If語句提高了代碼運行速度,但實際上確實是工作得很好。

  因此,可以將下面的代碼行

  DoEvents

  替換為

  If GetInputState() Then DoEvents

  試一試吧!

  其實,這裡面的原因在於:DoEvents語句允許任何應用程序執行相關事件,而不僅僅是你自己的程序。加入了GetInputState的判斷後,就只接受你自己的程序的事件動作了!

  讓Select Case更簡單

  讓我們看看下面的例子:通過用戶點擊不同組合的標簽,建立一個字符串:

  

lbl(0) = "Hello "
  
        lbl(1) = " I注釋:m "
  
        lbl(2) = " Happy"
  
        lbl(3) = " Sad"
  
        ...
  
        sub lbl_click (index as integer)
string$ = string$+lbl(index).caption

  然後,你就必須要編寫一系列的select case語句來分析這個字符串 ...

  

  select case string$
case "Hello I注釋:m Happy"
  
        do something
case "Hello I注釋:m"
  
        this would be an error...
case else
  
        do something else
  
        end select

  可以看出,這將非常得復雜,特別是又許多標簽而且需要合並操作的合法檢查時。

  為了解決這個難題,我創建了一個數組,它與標簽的數目等長:

  arraylbl(n) as integer

  數組起始數值為1,然後每個項目的值等於前一個的值乘以2(value*2),就象這樣:1 2 4 8 16 32 64 ... 這樣,每一對標簽的組合都會又一個唯一的數值“

  lbl(0) + lbl(1) = 1 + 2 = 3

  lbl(0) + lbl(1) + lbl(4) = 1 + 2 + 16 = 19

  現在,當點擊一個標簽時,將它對應的lblarray()數值添加進變量中。這樣,基於幾個數字,就可以簡單地編寫select case語句了:

  

select case IsLegal
case 3
  
        注釋: the string was valid
  
        call goodstuff
case 19
  
        注釋:the string was valid
  
        call goodstuff
case else
  
        注釋:invalid
  
        call nogood
  
        end select

  呵呵,有時候,將字符進行數字化,能起到意想不到的好效果!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved