thongkorn โพสต์ 2017-10-26 21:30:54

[VB6] การตัดค่า NULL ซึ่งมีค่า ASCII Code เท่ากับ 0 ทิ้งออกไป

http://www.g2gnet.com/webboard/images/vb6/nullvalue.gif

Null Value มักเป็นค่าไม่พึงประสงค์เท่าไหร่นัก ส่วนใหญ่จะหลงโผล่มาจากการอ่านค่า Serial Number ของอุปกรณ์ทางด้านฮาร์ดแวร์ ซึ่งค่า Null ไม่ใช่ค่าช่องว่าง หรือ Space นะครับ มันเป็นคนละตัวกัน เพราะ Null จะมีค่า ASCII Code = 0 ส่วน Space จะมีค่า ASCII Code = 32 (ฐาน 10)
Private Sub Form_Load()
    MsgBox TrimNull("ABCD" & Chr$(0) & Chr$(0) & Chr$(0))
End Sub

Public Function TrimNull(StringCheck As String) As String
   
    Dim strNull As String
    Dim nPos As Integer
   
    '// ใช้คำสั่ง (หรือฟังค์ชั่น) InStr เพื่อค้นหาค่า Null ตัวแรก ...กรณีนี้เจอค่า Null ในตำแหน่งที่ 5 ... ดังนั้น nPos = 5
    nPos = InStr(StringCheck, Chr$(0))
   
    Select Case nPos
      '// Is ก็คือ nPos นั่นแหละครับ ... เคยใช้กันบ้างหรือเปล่า 55555+
      Case Is > 1
            '// ให้นับค่า String ที่ส่งมายังฟังค์ชั่น จากซ้ายไปตามจำนวนของ nPos แล้วลบออกด้วย 1 ก็จะได้คำตอบ คือ ตัดค่า Null ทิ้งไปทั้งหมด
            strNull = Left(StringCheck, nPos - 1)
      Case 1
            strNull = ""
      Case Else
            strNull = StringCheck
    End Select
   
    '// ส่งค่าคืนกลับผ่านฟังค์ชั่น
    TrimNull = strNull
End Function


หน้า: [1]
ดูในรูปแบบกติ: [VB6] การตัดค่า NULL ซึ่งมีค่า ASCII Code เท่ากับ 0 ทิ้งออกไป