outhai1992 โพสต์ 2020-9-15 13:44:09

ขอคำชี้แนะเกิ่ยวกฟบ Select Case DirectCast operator '-' is not defined for type char and char

แก้ไขครั้งสุดท้ายโดย outhai1992 เมื่อ 2020-9-15 14:02

Public Function Main(ByVal StrChr As Char) As Char

      Select Case DirectCast((StrChr1 - "x"c), Char)
            Case ChrW(0)
                Return "x"c
            Case ChrW(1), ChrW(2), ChrW(3), ChrW(4), ChrW(5), ChrW(6), ChrW(7), vbBack, vbTab, vbLf, vbVerticalTab, vbFormFeed, vbCr, ChrW(14), ChrW(15), ChrW(16), ChrW(17), ChrW(18), ChrW(19), ChrW(20), ChrW(21), ChrW(22), ChrW(23), ChrW(24), ChrW(25), ChrW(26), ChrW(27), ChrW(28), ChrW(29), ChrW(30), ChrW(31), " "c, "!"c, """"c, "#"c, "$"c, "%"c, "&"c, "'"c, "("c, "4"c, ">"c, "?"c, "O"c, "R"c, "S"c, "T"c, "X"c, "Y"c, "Z"c, "["c, "\"c, "]"c, "^"c, "_"c, "`"c, "a"c, "b"c, "c"c, "d"c, "e"c, "f"c, "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, "m"c, "n"c, "o"c, "p"c, "q"c, "u"c, "v"c, "w"c, ChrW(135), ChrW(136), ChrW(137), ChrW(138), ChrW(139), ChrW(140), ChrW(141), ChrW(142), ChrW(143), ChrW(144), ChrW(145), ChrW(146), ChrW(147), ChrW(148), ChrW(149), ChrW(150), ChrW(151), ChrW(152), ChrW(153), ChrW(154), ChrW(155), ChrW(156), ChrW(157), ChrW(158), ChrW(159), " "c, "¡"c, "¢"c, "£"c, "¤"c, "¥"c, "¦"c, "§"c, "¨"c, "©"c, "ª"c, "«"c, "¬"c, "­"c, "®"c, "¯"c, "°"c, "±"c, "²"c, "³"c, "´"c, "µ"c, "¶"c, "·"c, "¸"c, "¹"c, "º"c, "»"c, "¼"c, "½"c, "¾"c, "¿"c, "À"c, "Á"c, "Â"c, "Ã"c, "Ä"c, "Å"c, "Æ"c, "Ç"c, "È"c, "É"c, "Ê"c, "Ë"c, "Ì"c, "Í"c, "Î"c, "Ï"c, "Ð"c, "Ñ"c, "Ò"c, "Ó"c, "Ô"c, "Õ"c, "Ö"c, "×"c, "Ø"c, "Ù"c
                Return StrChr
            Case ")"c
                Return "ກ"c
            Case "*"c
                Return "ຂ"c
            Case "+"c
                Return "ຄ"c
            Case ","c
                Return "ງ"c
            Case "-"c
                Return "ຈ"c
            Case "."c
                Return "ສ"c
            Case "/"c
                Return "ຊ"c
            Case "0"c
                Return "ຍ"c
            Case "1"c
                Return "ດ"c
            Case "2"c
                Return "ຕ"c
            Case "3"c
                Return "ຖ"c
            Case "5"c
                Return "ນ"c
            Case "6"c
                Return "ບ"c
            Case "7"c
                Return "ປ"c
            Case "8"c
                Return "ຜ"c
            Case "9"c
                Return "ຝ"c
            Case ":"c
                Return "ພ"c
            Case ";"c
                Return "ຟ"c
            Case "<"c
                Return "ມ"c
            Case "="c
                Return "ຢ"c
            Case "@"c
                Return "ວ"c
            Case "A"c
                Return "ຫ"c
            Case "B"c
                Return "ອ"c
            Case "C"c
                Return "ຮ"c
            Case "D"c
                Return "ຽ"c
            Case "E"c
                Return "ະ"c
            Case "F"c
                Return "າ"c
            Case "G"c
                Return "ຳ"c
            Case "H"c
                Return "ເ"c
            Case "I"c
                Return "ແ"c
            Case "J"c
                Return "ໂ"c
            Case "K"c
                Return "ໃ"c
            Case "L"c
                Return "ໄ"c
            Case "M"c
                Return "ໆ"c
            Case "N"c
                Return "ຯ"c
            Case "P"c
                Return "່"c
            Case "Q"c
                Return "້"c
            Case "U"c
                Return "ຫ"c
            Case "V"c
                Return "ໜ"c
            Case "W"c
                Return "ໝ"c
            Case "r"c
                Return "ທ"c
            Case "s"c
                Return "ຣ"c
            Case "t"c
                Return "ລ"c
            Case "x"c
                Return "ໍ"c
            Case "y"c
                Return "ັ"c
            Case "z"c
                Return "ິ"c
            Case "{"c
                Return "ີ"c
            Case "|"c
                Return "ຶ"c
            Case "}"c
                Return "ື"c
            Case "~"c
                Return "ົ"c
            Case ChrW(127)
                Return "ຸ"c
            Case ChrW(128)
                Return "ູ"c
            Case ChrW(129)
                Return "ຼ"c
            Case ChrW(130)
                Return "່"c
            Case ChrW(131)
                Return "້"c
            Case ChrW(132)
                Return "໊"c
            Case ChrW(133)
                Return "໋"c
            Case ChrW(134)
                Return "໌"c
            Case "Ú"c
                Return "-"c
      End Select

      Return StrChr
    End Function


thongkorn โพสต์ 2020-9-21 18:52:00

ไม่สามารถเอา String หรือ Character มาลบกันได้ครับ จะต้องแปลงค่าพวกนี้ให้เป็นตัวเลขก่อนด้วยคำสั่ง ASC("ตัวเลข/ตัวอักษร 1 ค่า") ...


ตัวอย่างการหาค่า ASCII Code เพื่อเปลี่ยนตัวเลข 0 - 9 ให้เป็น ๐ - ๙
โดยที่ 0 มี ASCII Code = 48 และ ๐ มีค่า ASCII Code = 240 ซึ่งจะมีค่าห่างกัน 192 ค่า ... การหาคำตอบจะไม่ใช้การเปรียบเทียบค่า แต่อาศัยรหัสแอสกี้โค้ดแทน


    Function ConvertNum(ByVal strChr As Char) As Char
      ConvertNum = ""
      Select Case strChr
            Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
                '// เมื่อ 0 มี ASCII Code = 48, ๐ มี ASCII Code = 240 ...
                '// ระยะห่างกัน 192 ค่า
                Return Chr(192 + Asc(strChr))
      End Select
    End Function

ตัวอย่าง ...
      Dim Num As String = String.Empty
      Dim NumThai As String = String.Empty
      For i = 0 To 9
            Num = Num & " " & i
            NumThai = NumThai & " " & ConvertNum(Chr(48 + i))
      Next
      Debug.Print("Num: " & Num & vbCrLf & "Num Thai: " & NumThai)

ผลลัพธ์ ...
Num:0 1 2 3 4 5 6 7 8 9
Num Thai:๐ ๑ ๒ ๓ ๔ ๕ ๖ ๗ ๘ ๙

หน้า: [1]
ดูในรูปแบบกติ: ขอคำชี้แนะเกิ่ยวกฟบ Select Case DirectCast operator '-' is not defined for type char and char