当前位置:编程学习 > VB >>

苦苦苦,这个过程如何写成函数啊?求救!

Private Sub Command1_Click()
'=======对文本进行编码处理
Dim i,str1,str2,str3
str1="需要处理的文本"
Dim b() As Byte  
b = StrConv(str1, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next
str2 = b
msgbox "结果1:" & str2         '返回的是经过编码后的乱码

'=======对文本进行反编码处理
For i = 0 To UBound(b)
    b(i) = b(i) Xor 2
Next  
str3=StrConv(b, vbUnicode)
msgbox "结果1:" & str3         '返回的是:"需要处理的文本"
End Sub


现在我想要做成二个函数(即编码函数和反编码函数)可以作如下调用:
Encode("需要处理的文本")  '得到编码后的字符串
UNEncode(经过编码后的乱码) '得到正常的字符串

请问这二个函数我该怎么写啊,搞了好久,都没搞好,不知道如何写,大家帮我看看吧 --------------------编程问答-------------------- 楼主你一点VB基础都没有的吗?


function Encode( str1 as string) as string
Dim i,str2,str3
Dim b() As Byte  
b = StrConv(str1, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next
str2 = b
Encode = str2
end function

--------------------编程问答--------------------
Option Explicit

Private Sub Command1_Click()
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    Dim b() As Byte
    b = StrConv(str1, vbFromUnicode)
        For i = 0 To UBound(b)
            b(i) = b(i) Xor 2
        Next
    str2 = StrConv(b, vbUnicode)
    Text1.Text = str2

End Sub


这一个函数就可以进行加密和解密。
--------------------编程问答--------------------
Option Explicit

Private Function encode(ByVal s As String) As String
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    Dim b() As Byte
    b = StrConv(str1, vbFromUnicode)
        For i = 0 To UBound(b)
            b(i) = b(i) Xor 2
        Next
    str2 = StrConv(b, vbUnicode)
    encode = str2

End Function
Private Sub Command1_Click()
    Text1.Text = encode(Text1.Text)
End Sub
--------------------编程问答-------------------- 你们没看到我的要求是写成二个函数吗?写在一起或写成加密的函数好写,可是解密的UNEncode就难啊.!!!!!! --------------------编程问答-------------------- 你将加密函数复制一下改个名就叫解密函数了,由于你的加密算法的特殊性,你的加密算法和解密算法本身是一样的,看来别人的代码你都没试过。

Option Explicit

Dim xx() As Byte
Private Function encode(ByVal s As String) As Byte()
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    Dim b() As Byte
    b = StrConv(str1, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next

    encode = b

End Function

Private Function decode(b() As Byte) As String
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next

    decode = StrConv(b, vbUnicode)

End Function

Private Sub Command1_Click()
    xx = encode(Text1.Text)
    
    Text1.Text = ""
End Sub

Private Sub Command2_Click()
    Text1.Text = decode(xx)
End Sub

--------------------编程问答-------------------- 你将加密函数复制一下改个名就叫解密函数了,由于你的加密算法的特殊性,你的加密算法和解密算法本身是一样的,看来别人的代码你都没试过。

Option Explicit

Dim xx() As Byte
Private Function encode(ByVal s As String) As Byte()
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    Dim b() As Byte
    b = StrConv(str1, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next

    encode = b

End Function

Private Function decode(b() As Byte) As String
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next

    decode = StrConv(b, vbUnicode)

End Function

Private Sub Command1_Click()
    xx = encode(Text1.Text)
    
    Text1.Text = ""
End Sub

Private Sub Command2_Click()
    Text1.Text = decode(xx)
End Sub

--------------------编程问答--------------------
引用 4 楼 gb222 的回复:
你们没看到我的要求是写成二个函数吗?写在一起或写成加密的函数好写,可是解密的UNEncode就难啊.!!!!!!


真像老师在教训学生...... --------------------编程问答-------------------- “理直气壮” --------------------编程问答-------------------- 呵呵,语气不对,不好意思啊,我错了.:))))))) --------------------编程问答--------------------
引用 5 楼 jennyvenus 的回复:
你将加密函数复制一下改个名就叫解密函数了,由于你的加密算法的特殊性,你的加密算法和解密算法本身是一样的,看来别人的代码你都没试过。 


VBScript codeOption Explicit

Dim xx() As Byte
Private Function encode(ByVal s As String) As Byte()
    Dim i As Long
    Dim str1 As String, str2 As String, str3 As String
    str1 = Text1.Text
    Dim b() As Byte
    b = StrConv(str1, vbFromUnicode)


不对哦,既然是函当选,里面就不应该出现Text1.Text这样的东东啊,我改了一下,可以加密,但是解密的那个我没有改出来,再帮我看看嘛 --------------------编程问答-------------------- 上面的打错字了,可是不让修改,在这里补改吧
……不对哦,既然是函数,里面就不应该出现Text1.Text这样的东东…… --------------------编程问答--------------------

Private Function Encode(ByVal s As String) As String
    Dim b() As Byte
    Dim i As Long
    b = StrConv(s, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next
    Encode = StrConv(b, vbUnicode)
End Function

Private Function Decode(ByVal s As String) As String
    Dim i As Long
    Dim b() As Byte
    b = StrConv(s, vbFromUnicode)
    For i = 0 To UBound(b)
        b(i) = b(i) Xor 2
    Next
    Decode = StrConv(b, vbUnicode)
End Function

'测试 
Private Sub Command1_Click()
    Dim s As String
    s = "abcdefgABCDEFG中国"
    s = Encode(s)
    Debug.Print s
    s = Decode(s)
    Debug.Print s
End Sub

'结果:
c`afgdeC@AFGDE砸圾
abcdefgABCDEFG中国
--------------------编程问答-------------------- 关注 --------------------编程问答-------------------- up
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,