顯示具有 2.3.4 VB技研 標籤的文章。 顯示所有文章
顯示具有 2.3.4 VB技研 標籤的文章。 顯示所有文章

2011年11月26日 星期六

VB教學-觀念篇-正確的除錯 (Debug) 方式

當程式執行起來怪怪的,很多人在除錯 (Debug) 時,都喜歡在程式中使用中斷點 (Break) 加上 MsgBox 來看執行結果,但有些時候,這樣子的作法會造成某些事件 (Event) 無法觸發,甚至改變事件原來觸發的順序! 7 q1 F: p% j" ^! `, ]% K. U
9 a# c: T" e  c/ V! r6 D1 M
比較正確的作法是在程式中使用 Debug.Print "事件名稱/要顯示的訊息" ,而不要用中斷點 (Break)。

本文轉貼自:http://freeshare2u.com/

2011年11月25日 星期五

VB-快速鍵-找尋 Function/Subroutine

當您的 APP 愈來愈大時,或是您要維護別人開發的大系統時,是否曾經有過一種情形,程式中 call 了某一個 Function/Subroutine,您要找尋這個 Function/Subroutine,除了一個一個 Module 找之外,大部份的人都是使用【編輯功能表】的【搜尋】功能。

' D! |7 J/ ^8 y  i
其實您可以使用 【Shift + F2】快速鍵!很簡單,方法如下:

只要將游標停留在程式中該 Function/Subroutine Name 上,再使用【Shift + F2】快速鍵即可!

2011年11月24日 星期四

VB與Windows API 間的呼叫技巧

    一般會使用WINDOW API的情況,實在是因為VB本身不提供某些功能,但是,程式所需又不得不然,例如:讀取Registry內的資料,VB只提供SaveSetting、Getsetting 等系列的指令,但是它只能讀取特定地區的值,要讀、刪、更動其他區域的值時,就無法仔細看一看Combo Box的Events,其中沒有MouseMove,但這是我們經常用上的一個Event,那該如何呢?是的,那只有透過Winodow API。而VB呼叫Window API一般不都使用API檢視員,直接將相對應的API  COPY到我們的程式中就好,那還用什麼技巧嗎?其實不然,因為VB資料格式的問題,又加上VB本身沒有指標,在許多地方需要一些小技巧才能解決,而且我們經常因應不同的需求,將API 檢視員的宣告COPY過來後再做一些修改,最重要的,如果有一個.DLL檔,它不在API 檢視員中定義,那時,就只有自己想辦法啦。

--------------------------------------------------------------------------------

 
 一、 整數參數

 Windows                                                 API32位元VB

--------------------------------------------------------------------------------
Int,  INT_________________________ByVal  Long
UNIT,  DWORD__________________ByVal  Long
BOOL__________________________ByVal  Long    ture時為1
WPARAM,  LPARAM,  LRESULT___ByVal  Long
Handle(如HKEY)_________________ByVal  Long
WORD,  ATOM,  SHORT__________ByVal  Integer
BYTE, CHAR ___________________ ByVal  Byte

 
 Eg.
-----------------------------------------------------------------------------
Windows API 宣告
  SHORT GetKeyState( int  nVirtKey )

對應的VB宣告
 Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
--------------------------------------------------------------------------------------------------------------
    這個API 可用來檢視某些KEY (如Insert鍵、Num Lock、CapsLock等)是on/off。程式如下:這個例子應該可十分楚的看到各個整數間的宣告對應。
----------------------------------------------------------------------------------------------------------------
Dim InsertMode as Integer
InsertMode = GetKeyState(vbKeyInsert) And vbShiftMask
If InsertMode = 1 then
  Debug.print "表示 Insert Mode"
Else
  Debug.print "表示 OverWrite Mode"
End If

--------------------------------------------------------------------------------

VB語言的基本型別

VB語言的變數型別(資料型態):
型別說明 位元組範圍
Boolean布林值 2True或False
Byte正整數 10~255
SByte整數 1-128~127
Char字元 20~65535
Short短整數 2-32768~32767
UShort正短整數 20~65535
Integer整數4-2147483648~2147483647
UInteger正整數 40~4294967295
Long長整數 8-9223372036854775808~9223372036854775807
ULong正長整數 80~18446744073709551615
Single單精度的浮點數 4
負值範圍為-3.4028235E+38~-1.401298E-45 ;
正值的範圍為1.401298E-45~3.4028235E+38
Double雙精度的浮點數 8負值範圍為-1.79769313486231570E+308~
-4.94065645841246544E-324
正值範圍為4.94065645841246544E-324~
1.79769313486231570E+308
Decimal數值160~+/-79228162514264337593543950335沒有小數 ,
0~+/-79228162514264337593543950335帶28位小數
最小的非零值為+/-0.0000000000000000000000000001(+/-1E-28)
Date日期 80001年1月1日~9999年12月31日
String字串依平台0~2百萬Unicode字元
Object物件4物件型態變數可以儲存各種資料型態的值


紅色的型別是之前上課時經常使用的...但是位元組的大小會影響程式運算速度喔!
寫程式時可以依據範圍需求選擇位元組更小的適用型別...
例如:要宣告一個變數作為月份...數值範圍為1~12正整數...就可以選擇Byte來代替Integer...

變數宣告方式:
Dim strName as String="分享2U"
Dim bytAge as Byte=35