工行总行学历重要:一个关于VB编程的问题,急救!

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 04:52:53
我要做一个二进制转十进制的窗体
现在我的命令是这样的
Public Function E2to10(ByVal N As String)
Dim M As Integer

N = Right("00000000" & N, 8)

For I = 7 To 0 Step -1
M = M + Val(Mid(N, 8 - I, 1)) * 2 ^ I
Next
E2to10 = M
End Function

Private Sub Command1_Click()
Text2.Text = E2to10(Text1.Text)
End Sub

我现在想让Text1.Text里只能输入0,1所组成的数,如果不是 那系统会报错。而且最好能转换含小数的2进制。
拜托各位大侠,我下星期1就要交作业了 救命啊!!!
第一个问题解决了 但是这样还是不能算小数的转化啊 再麻烦大家帮帮忙~

Private Sub Command1_Click()
For i = 1 To Len(Text1.Text)
If Val(Mid(Text1.Text, i, 1)) Mod 10 > 1 Or _
IsNumeric(Text1.Text) = False Then _
MsgBox "请输入二进制数据!", 48, "警告": Exit Sub
Next
Text2.Text = dec(Text1.Text)
End Sub

Function dec(n As String) As Long
For i = 1 To Len(n)
dec = dec * 2 + Val(Mid(n, i, 1))
Next
End Function

检测文本框事件,一旦发现有输入,马上取出text1.text,并判断最后输入的数字是否是0或1,然后如果不是,则警告并删除刚刚的输入。

程序中添加Text1的KeyPress事件,当输入不是“0”、“1”、“.”、“退格”时输入无效

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Or KeyAscii = 46 Then Exit Sub
If KeyAscii <> 48 And KeyAscii <> 49 Then KeyAscii = 0
End Sub

另外,还可以添加全部判断的内容,以便对复制粘贴的内容进行检查,真正的智能,还需要进一步优化。

Public Function E2to10(ByVal N As String)
Dim M As Integer

For i = Len(N) - 1 To 0 Step -1
M = M + Val(Mid(N, Len(N) - i, 1)) * 2 ^ i
Next
E2to10 = M

End Function

Private Sub Command1_Click()
Text2.Text = E2to10(Text1.Text)
End Sub

Private Sub Form_Load()
Text1.MaxLength = 15
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii <> 48 And KeyAscii <> 49 Then

KeyAscii = 0

End If

End Sub