[VB6] การตัดค่า NULL ซึ่งมีค่า ASCII Code เท่ากับ 0 ทิ้งออกไป
http://www.g2gnet.com/webboard/images/vb6/nullvalue.gifNull 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]