使用者工具

網站工具


visual_basic_dot_net

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
visual_basic_dot_net [2024/04/15 08:24]
don
visual_basic_dot_net [2024/04/15 09:13] (目前版本)
don [String 字串]
行 1: 行 1:
 ====== Visual Basic.Net 研究 ====== ====== Visual Basic.Net 研究 ======
 +
 +
  
  
行 32: 行 34:
 commPort.WriteBufferSize\\ commPort.WriteBufferSize\\
 commPort.ReadBufferSize\\ commPort.ReadBufferSize\\
 +
 +
 +===== 執行外部程式 =====
 +<code>
 +Imports System.Diagnostics 
 +'方法 1:
 +Process.Start("C:\F4G\BIN\F4EDVPDE.EXE", "/LC /P")
 +
 +Dim p As New Process
 +' 方法 2:
 +Dim pi1 As New Diagnostics.ProcessStartInfo( _
 +  "C:\F4G\BIN\F4EDVPDE.EXE", "/LC /P")
 +p.StartInfo = pi1
 +p.Start()
 +
 +' 方法 3:
 +Dim pi2 As New Diagnostics.ProcessStartInfo( _
 +  "C:\F4G\BIN\F4EDVPDE.EXE")
 +pi2.Arguments = "/LC /P"
 +p.StartInfo = pi2
 +p.Start()
 +</code>
 +
 +
 +如果你想在VB字符串文字中包含双引号,那么只需用另一个双引号来转义它,例如
 +<code>Process.Start(App.exe, "arg1 ""arg 2"" arg3")''</code>
 +与任何其他字符串一样,您可以使用连接:
 +<code>Process.Start(App.exe, "arg1 """ & arg2 & """ arg3")''</code>
 +或致电String.Format:
 +<code>Process.Start(App.exe, String.Format("arg1 ""{0}"" arg3", arg2))''</code>
 +或使用字符串插值:
 +<code> Process.Start(App.exe, $"arg1 ""{arg2}"" arg3")'' </code>
 +
 +===== 聲音控制 =====
 +
 +<code>
 +Imports System
 +Imports System.Windows.Forms
 +Imports System.Runtime.InteropServices
 +
 +Partial Public Class Form1
 + Inherits Form
 + Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000
 + Private Const APPCOMMAND_VOLUME_UP As Integer = &HA0000
 + Private Const APPCOMMAND_VOLUME_DOWN As Integer = &H90000
 + Private Const WM_APPCOMMAND As Integer = &H319
 +
 + <DllImport("user32.dll")> _
 + Public Shared Function SendMessageW(ByVal hWnd As IntPtr, _
 +                           ByVal Msg As Integer, ByVal wParam As IntPtr, _
 +        ByVal lParam As IntPtr) As IntPtr
 +    End Function
 +
 +    Private Sub btnMute_Click(ByVal sender As Object, ByVal e As EventArgs)
 +                  SendMessageW(Me.Handle, WM_APPCOMMAND, _
 +                         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
 +    End Sub
 +
 +    Private Sub btnDecVol_Click(ByVal sender As Object, ByVal e As EventArgs)
 +                      SendMessageW(Me.Handle, WM_APPCOMMAND, _
 +                          Me.Handle, New IntPtr(APPCOMMAND_VOLUME_DOWN))
 +    End Sub
 +
 +    Private Sub btnIncVol_Click(ByVal sender As Object, ByVal e As EventArgs)
 +            SendMessageW(Me.Handle, WM_APPCOMMAND, _
 +                         Me.Handle, New IntPtr(APPCOMMAND_VOLUME_UP))
 +    End Sub
 +End Class
 +</code>
 +
 +
 +===== 程式斷行與註解 =====
 +1.斷行符號: _ (底線)
 +說明:\\
 +  程式碼中,有時程式碼太長了,要接到下一行時,這時就要用斷行符號\\
 +範例:\\
 +原程式\\
 +Dim lognVarNeedToBreakLine As String = "This is a long default string"\\
 +斷成二行的程式,最後加個底線就可以了\\
 +<code>Dim lognVarNeedToBreakLine As String = _
 +
 +        "This is a long default string"
 +</code>
 +2.換行符號: vbCrLf
 +說明: \\
 +    如果字串中,要為了顯示的需求,要加入跳行符號,來讓符號後的字串內容,
 +    顯示到下一行時,就要加入換行符號
 +範例:\\
 +    字串連結的程式碼中,加入vbCrLf即可
 +    longVarNeedToBreakLine = "PartA" + vbCrLf + "PartB"
 +
 +
 +3.註解: ' (單引號)
 +說明: \\
 +    註解程式中的說明內容,來讓註解文字不要編譯時,就要使用註解符號\\
 +範例:\\
 +    要註解的程式前面,加個單引號就變成註解了\\
 +'備註:這行是註解內容\\
 +
 +===== String 字串 =====
 +Integer HEX 轉成字串
 +<code>
 +Dim val As String
 +val = "10"
 +Dim hexVal As Integer
 +hexVal = Convert.ToInt32(val, 16) //16 specifies the base
 +Console.WriteLine(hexVal)
 +
 +Integer Array to String
 +Dim commandList(50) As Byte
 +Dim command As String
 +</code>
 +
 +字串是String資料型態的變數或字串值,字串是0或多個依序的Char資料型態的字元,\\
 +以雙引號括起的文字內容,如下所示:
 +<code>Dim str As String ="Visual Basic 2010程式設計" </code>
 +或 
 +<code>
 +Dim str1 As String
 +str1 = "Visual Basic 2010程式設計"
 +</code>
 +
 +字串長度與大小寫轉換 \\
 +函數可以取得字串長度、進行英文字母大小寫轉換和刪除頭尾的空白字元,如下表所示:\\
 +
 +^函數 ^說明 ^
 +|Len(Stmt) |傳回整數的字串長度,擁有多少個字元或中文字|
 +|UCase(Stmt) |將參數字串或字元的英文字母轉換成大寫|
 +|LCase(Stmt) |將參數字串或字元的英文字母轉換成小寫|
 +|LTrim(Stmt) |刪除字串開頭的空白字元|
 +|RTrim(Stmt) |刪除字串結尾的空白字元|
 +|Trim(Stmt) |刪除頭尾兩端的空白字元|
 +|Space(num) |傳回參數num個空白字元的字串|
 +|Asc(Stmt) |傳回參數Stmt字串第1個字元的ASCII碼,例如:Asc("A")為65|
 +
 +取出子字串與字串反轉\\
 +
 +^函數 ^說明 ^
 +|Mid(Stmt, start[ , length]) |從參數Stmt字串的start位置(從1開始)取出長度length的子字串,如果沒有length參數,就是從start位置到字串結尾的所有字元|
 +|Left(Stmt, length) |從參數Stmt字串從開頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串|
 +|Right(Stmt, length) |從參數Stmt字串從右邊回頭起算共length長度的字元,如果為0傳回空字串,如果大於字串長度,傳回整個字串|
 +|StrReverse(Stmt) |將參數的Stmt字串反轉,例如:Visual Basic成為cisaB lausiV|
 +       
 +範例練習 :\\
 +<code>
 +Dim a, b, c As String
 +
 +a = "1234567.abc"
 +b = "98766.abcd"
 +
 +MsgBox("LEFT : " & Microsoft.VisualBasic.Left(a, 3))
 +MsgBox("Right : " & Microsoft.VisualBasic.Right(a, 3))
 +MsgBox("Mid : " & Microsoft.VisualBasic.Mid(a, 4, 3))
 +MsgBox("Len : " & Microsoft.VisualBasic.Len(a))
 +</code>
 +
 +InStr函數,傳回在某字串中一字串的最先出現位置,傳回0表示沒有找到,我們可以利用它來判斷字串中是否有關鍵字存在。\\
 +
 +<code>
 +Dim str1 As String, str2 As String  
 +str1 = "1 3  2  abc     "  
 +str2 = "c"  
 +msgbox(InStr(1, str1, str2))   
 +msgbox(InStr(1, str1, str2) >= 1)  
 +
 +Original="0123456789"
 +x=Instr(1,Original,",",CompareMethod.Text)
 +Original.Length=10
 +x 找不到字串則為0
 +</code>
 +
 +<code>
 +常用VB字串處理函數
 +使用內建函數:
 +Len:計算字串的長度。
 +範例:strLen=Len("Taiwan")
 +結果:6
 +
 +Mid:依開始位置擷取固定長度字串。
 +範例:strLen=Mid("Taiwan",1,2)
 +結果:Ta
 +
 +Left:將字串由左側擷取固定長度。
 +範例:strLen=Left("Taiwan",2)
 +結果:Ta
 +    
 +Right:將字串由右側擷取固定長度。
 +範例:str=Right(" Taiwan ",2)
 +結果:an
 +
 +Lcase:將字串中的大寫字母變成小寫。
 +範例:str=Lcase("Taiwan")
 +結果:taiwan
 +
 +Ucase:將字串中的小寫字母變成大寫。
 +範例:str=Ucase("Taiwan")
 +結果:TAIWAN
 +
 +Trim:刪頭尾空白
 +範例:str=Trim("   Taiwan    ")
 +結果:Taiwan
 +
 +Ltrim:刪字串左側的空白
 +範例:str=Ltrim("  Taiwan    ")
 +結果:Taiwan     
 +
 +Rtrim:刪字串右側的空白\\
 +範例:str=Rtrim("  Taiwan    ")
 +結果:  Taiwan
 +刪字串 兩側     的空白
 +
 +Replace:將字串中的某字串,以另一字串代替。
 +範例:str=Replace("Taiwan","Tai"," Nan ")
 +結果:Nanwan
 +
 +Instr:傳回子字串在字串中的第一次出現位置。
 +範例:strLen=Instr("ABCabc","a")
 +結果:4
 +
 +Space:產生指定個數空白。
 +範例:Space(10)
 +結果:4個空白
 +
 +String:產生指定個數的字元。
 +範例:str=String(5,"$")
 +結果:$$$$$
 +
 +範例:str=String(4,66)
 +結果:BBBB
 +    
 +Strreverse:將字串前後反轉。
 +範例:str=Strreverse(" Taiwan ")
 +結果:nawiaT
 +
 +Split:字串分割
 +範例:str=Split("Taiwan","T")
 +結果:
 +str(0)="T"
 +str(1)="aiwan"
 +</code>
 +
 +.NET Framework:比較字串\\
 +[[http://msdn.microsoft.com/zh-tw/library/fbh501kz(VS.80).aspx]]\\
 +String.Compare:比較兩個字串的值。傳回整數值。\\
 +String.CompareOrdinal:比較兩個字串,不管本地文化特性。傳回整數值。\\
 +String.CompareTo:將目前的字串物件與另一個字串加以比較。傳回整數值。\\
 +String.StartsWith:判斷字串的開頭是否為傳入的字串。傳回布林值。\\
 +String.EndsWith:判斷字串的結尾是否為傳入的字串。傳回布林值。\\
 +String.Equals:判斷兩個字串是否相同。傳回布林值。\\
 +String.IndexOf:從您正在檢查的字串開頭開始,傳回字元或字串的索引位置。傳回整數值。\\
 +String.LastIndexOf:從您正在檢查的字串結尾開始,傳回字元或字串的索引位置。傳回整數值。\\
 +
 + 
 +^名稱 ^說明 ^
 +|Clone |傳回對 String 這個執行個體的參考。|
 +|Compare |多載。 比較兩個指定的 String 物件。|
 +|CompareOrdinal |多載。 藉由評估每個字串中對應的 Char 物件之數字值,比較兩個 String 物件。|
 +|CompareTo |多載。 將這個執行個體與指定的物件或 String 相比較,並傳回它們的相對值指示。|
 +|Concat |多載。 串連一個或多個 String 的執行個體,或者一個或多個 Object 執行個體值的 String 表示。|
 +|Contains |傳回值,指出指定的 String 物件是否會出現在這個字串內。|
 +|Copy |使用與指定的 String 相同的值,建立 String 的新執行個體。|
 +|CopyTo |將字元的指定數目從這個執行個體的指定位置,複製到 Unicode 字元陣列的指定位置。|
 +|EndsWith |多載。 判斷 String 執行個體的結尾是否符合指定之字串。|
 +|Equals |多載。 覆寫。 判斷兩個 String 物件是否具有相同的值。|
 +|Format |多載。 以與對應物件值相等的文字,取代指定 String 中的每個格式項目。|
 +|GetEnumerator |擷取可以逐一查看這個字串中個別字元的物件。|
 +|GetHashCode |覆寫。 傳回這個字串的雜湊程式碼。|
 +|GetType  |取得目前執行個體的 Type。 (繼承自 Object)。|
 +|GetTypeCode |傳回類別 String 的 TypeCode。|
 +|IndexOf |多載。 報告這個字串中 String 或一或多個字元之第一個符合項目的索引。|
 +|IndexOfAny |多載。 報告指定 Unicode 字元陣列中的任何字元於這個執行個體中第一個符合項目的索引。|
 +|Insert |在這個執行個體的指定索引位置,插入 String 的指定執行個體。|
 +|Intern |擷取指定的 String 的系統參考。|
 +|IsInterned |擷取對指定 String 的參考。|
 +|IsNormalized |多載。 指出這個字串是否為特定的 Unicode 正規化格式。|
 +|IsNullOrEmpty |指出指定的 String 物件是否為 Null 參照 (即 Visual Basic 中的 Nothing) 或 Empty 字串。|
 +|Join |多載。 將指定 String 陣列每個元素之間的指定分隔符號 String 串連,產生單一的串連字串。|
 +|LastIndexOf |多載。 報告這個執行個體中指定 Unicode 字元或 String 最後項目的索引位置。|
 +|LastIndexOfAny |多載。 報告 Unicode 陣列中的一個或多個指定字元在這個執行個體中最後項目的索引位置。|
 +|Normalize |多載。 傳回新的字串,其二進位表示為特定的 Unicode 正規化格式。|
 +|op_Equality |判斷兩個指定的 String 物件是否具有相同的值。|
 +|op_Inequality |判斷兩個指定的 String 物件是否具有不同的值。|
 +|PadLeft |多載。 將這個執行個體中的字元靠右對齊,以空格或指定的 Unicode 字元在左側填補至指定的總長度。|
 +|PadRight |多載。 將這個字串中的字元靠左對齊,以空格或指定的 Unicode 字元在右側填補至指定的總長度。|
 +|ReferenceEquals  |判斷指定的 Object 執行個體是否為相同的執行個體。 (繼承自Object)。|
 +|Remove |多載。 從這個執行個體中刪除指定數目的字元。|
 +|Replace |多載。 以另一個指定的 Unicode 字元或 String,取代這個執行個體中指定的 Unicode 字元或 String 的所有項目。|
 +|Split |多載。 傳回 String 陣列,其中包含這個執行個體中由指定的 Char或 String 陣列之元素所分隔的子字串。|
 +|StartsWith |多載。 判斷 String 執行個體的開頭是否符合指定之字串。|
 +|Substring |多載。 從這個執行個體擷取子字串。|
 +|ToCharArray |多載。 將這個執行個體中的字元複製到 Unicode 字元陣列中。|
 +|ToLower |多載。 傳回轉換成小寫的這個 String 複本。|
 +|ToLowerInvariant |傳回轉換成小寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。|
 +|ToString |多載。 覆寫。 將這個執行個體的值轉換為 String。|
 +|ToUpper |多載。 傳回轉換成大寫的這個 String 複本。|
 +|ToUpperInvariant |傳回轉換成大寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。|
 +|Trim |多載。 將指定字元集的所有項目從這個執行個體的開頭和結尾移除。|
 +|TrimEnd |將陣列中指定的字元集之所有項目從這個執行個體的結尾移除。|
 +|TrimStart |將陣列中指定的字元集之所有項目從這個執行個體的開頭移除。|
 + 
 +<code>
 +String.Substring( ):從指定的字元位置開始截取字串
 +語法:字串變數.Substring(左起始位數 , 取幾位) 
 +範例:string s1 = str.Substring(0,2);
 +String.length():取得字串長度
 +String.Remove(int1,int2):從int1(起始位置)開始刪除長度為int2的字串
 +String.Insert(int,string):在int的位置插入string
 +String.Substring(int):從參數開始取出剩下的字串
 +String.Substring(int1,int2):取出int1開始長度為int2的字串
 +String.IndexOf(string):傳回第一次搜尋到字串(string)的位置
 +String.IndexOf(string,int):傳回第一次搜尋到字串(string)的位置,開始搜尋位置為int
 +String.LastIndexOf(string):跟IndexOf功能類似,但從後面開始搜尋
 +String.LastIndexOf(string,int):跟IndexOf功能類似,但從後面開始搜尋
 +String.Replace(char,char):取代字元
 +String.ToLower():將英文轉成小寫
 +String.ToUpper():將英文轉成大寫
 +String.Trim():刪除字串前後的空白字元
 +String.TrimEnd():刪除字串尾部的空白字元
 +String.TrimStart():刪除字串開頭的空白字元
 +String.PadLeft(2,"0") : 將字串長度不足2位,左邊補 0
 +</code>
 +
 +
 +===== 副程序 =====
 +Sub 程序 : 此種程序不會傳回值\\
 +Function 程序 : 此種程序會傳回值,Function 也可稱為函式\\
 +Event 程序 : 此種程序不會傳回值。\\
 +Property 程序 : 此種程序用來傳回和設定物件的屬性。\\
 +
 +<code>
 +[Private | Public] Sub 程序名稱 ([引數串列])
 + [程式區段]
 + [Exit Sub]
 + [Return]
 +End Sub
 +</code>
 +
 +如何呼叫\\
 +Call 程序名稱([引數串列]) or  \\
 +程序名稱([引數串列])\\
 +
 +<code>
 +[Private | Public] Function函式名稱 ([引數串列]) [As 資料型別]
 + [程式區段]
 + 函式名稱 = 運算式 或 (Return 運算式)
 + [Exit Function]
 +End Function
 +</code>
 +
 +返回參數\\
 +函式名稱 = username  or Return = Username\\
 +
 +如何呼叫\\
 +變數名稱 = 函式名稱 ([引數串列])\\
 +
 +參數\\
 +<code>
 +GetWelcome(ByVal username As String , ByVal ismale As Boolean) As String
 +GetWelcome(ByRef username As String , ByRef ismale As Boolean) As String
 +</code>
 +
 +程序引數可選擇性\\
 +Sub 程序名稱 (…………, Optional ByVal 引數 As 資料型別= 預設值, ……… ])\\
 +
 +<code>
 +Function mult(ByVal x1 As Integer, ByVal x2 As Integer, Optional ByVal x3 As Integer=0) As Integer
 +</code>
 +如果沒有傳遞第三個引數則以0替代\\
 +
 +傳遞陣列\\
 +呼叫敘述 inverse(arrayname1)   實引數不需加小括號\\
 +被呼叫程序 Sub inverse(ByVal arrayname2() As Integer)   虛引數須加小括號\\
 +
 +如果想要到整個程式結束變數才被釋放 則可以使用靜態變數\\
 +''Static AAA As Integer =10''\\
 +
 +''Property ……….. End Property''\\
 +
 +程序引數可選擇性\\
 +<code>
 +Sub 程序名稱(………, optional ByVal 引數 As 資料型別=預設值, ………)
 + 程式區段
 +End Sub
 +</code>
 +
 +若傳遞引數具有選擇性,可使用 Optional 來宣告,被宣告成選擇性的引數,\\
 +必須指定資料型別及預設值,而且其後的引數也必須為選擇性參數。\\
 +
 +
  
visual_basic_dot_net.1713140647.txt.gz · 上一次變更: 2024/04/15 08:24 由 don