| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1703 人关注过本帖
标题:初来乍到来混个脸熟 对VB编程略有基础 希望更加熟练精化
只看楼主 加入收藏
暴疯语
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-7-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
初来乍到来混个脸熟 对VB编程略有基础 希望更加熟练精化
先来段进制转换把 希望有大师能发现一些不足之处
还是学生所以难免会有些考虑不全的
还有就是有些阅读格式问题有点马虎希望不要介意
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
Dim r$, b%, s$, l%, K%, z%, tx$

Private Sub Command1_Click()
a = Text1.Text
For i = 0 To 3
    If Option1(i).Value = True Then x = i
    If Option2(i).Value = True Then y = i
Next i
s = ""

 Select Case x
    Case 0
     s = Text1.Text
    Case 1
         For i = 1 To Len(a)
         t = Val(Mid(a, i, 1))
         r = ""
           Do
            u = t Mod 2
            t = Int(t / 2)
            r = u & r
           Loop Until t = 0
           Do Until Len(r) Mod 3 = 0
            r = "0" & r
           Loop
           s = s & r
          Next i
    Case 2
         t = Val(a)
           Do
            u = t Mod 2
            t = Int(t / 2)
            s = u & s
           Loop Until t = 0
    Case 3
          For i = 1 To Len(a)
         t = Mid(a, i, 1)
          If t >= "0" And t <= "9" Then
          r = ""
           Do
            u = t Mod 2
            t = Int(t / 2)
            r = u & r
           Loop Until t = 0
        Do Until Len(r) Mod 4 = 0
            r = "0" & r
           Loop
           s = s & r
          Else
            t = Asc(t) - 55
            r = ""
              Do
                u = t Mod 2
                t = Int(t / 2)
                r = u & r
           Loop Until t = 0
          Do Until Len(r) Mod 4 = 0
            r = "0" & r
           Loop
           s = s & r
           End If
          Next i
     End Select
     tx = ""
Select Case y
  Case 0
   tx = s

 Case 1
    Do Until Len(s) Mod 3 = 0
     s = "0" & s
    Loop
    chang = Len(s)
    For i = 1 To chang \ 3
     u = Left(s, 3)
     s = Right(s, Len(s) - 3)
     a = 0
     For j = 1 To 3
      a = a + Val(Mid(u, j, 1)) * (2 ^ (3 - j))
     Next j
     tx = tx & a
    Next i

 Case 2
      a = 0
      For i = 1 To Len(s)
      a = a + Val(Mid(s, i, 1)) * 2 ^ (Len(s) - i)
      Next i
      tx = a
      

 Case 3
        Do Until Len(s) Mod 4 = 0
         s = "0" & s
        Loop
        chang = Len(s)
        For i = 1 To chang \ 4
            u = Left(s, 4)
            s = Right(s, Len(s) - 4)
            a = 0
            For j = 1 To 4
                a = a + Val(Mid(u, j, 1)) * (2 ^ (4 - j))
            Next j
            If a > 9 Then
               tx = tx & Chr(a + 55)
              Else
               tx = tx & a
            End If
        Next i
End Select

 Text2.Text = tx
End Sub

Private Sub Option1_Click(Index As Integer)

For i = 0 To 3
If Option1(i).Value = True Then p = i
Next i
Select Case p
Case 0

 K = 48

 z = 49
Case 1

 K = 48

 z = 55
Case 2

 K = 48

 z = 57
Case 3

 K = 48

 z = 57

 End Select
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

 If KeyAscii = 8 Then Exit Sub

 If KeyAscii < K Or KeyAscii > z Then
  If Option1(3).Value = True And KeyAscii >= 65 And KeyAscii <= 70 Then
  Exit Sub
  Else
  KeyAscii = 0
  End If
  KeyAscii = 0
End If
  
  
End Sub


搜索更多相关主题的帖子: 先来 color 
2016-08-12 22:43
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
测试就不测试了,只提几点建议。
一、多使用自定义函数。
你这里面,可以自定义几个函数。
1、二进制转十进制
2、八进制转十进制
3、十六进制转十进制
4、十进制转二进制
5、十进制转八进制
6、十进制转十六进制

各个功能定义为独立的函数。
程序里分支选择调用自定义函数得到转换后的数据。这样的程序更好读一些。
维护起来也更好修改。调用者不需要管如何去实现了,只需要知道调用什么就可以得到什么结果。
如,十进制转二进制,可以使用除法,也可以使用分支选择。
当使用分支选择时,可以先调用十进制转十六进制函数。然后对每个字符进行十六项的分支选择。
这里就提高了代码的复用性。

二、优化
1、这二个分支完全一样,
Case 2
 K = 48
 z = 57
Case 3
 K = 48
 z = 57
可以简化为
Case 2,3
 K = 48
 z = 57
如果超过2以上的都是一样的。
还可以写成
Case is >=2
 K = 48
 z = 57

2、定义:
Dim r$, b%, s$, l%, K%, z%, tx$
这种定义针对的是从 QBASIC或再早的BASIC升上来的程序员来说,很简单,
但对于新手来说,这种定义有些时候反应不容易看懂。
VB保留这种定义,主要也是从兼容老程序的,所以一般情况下,写代码需要给别人看的,就不要建议这样写,
而使用完整的 As 关键字说明数据类型。

其他还没看出来。


授人于鱼,不如授人于渔
早已停用QQ了
2016-08-14 19:33
暴疯语
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-7-28
收藏
得分:0 
回复 2楼 风吹过b
比较感谢你的点评   
最程序的优化还是有些不够
尤其是可读性的方面
现在还只是停留在做出来就好了层面
希望能在这个论坛多了解些知识和经验
2016-08-17 16:29
pengzhanggui
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:161
专家分:344
注 册:2015-7-20
收藏
得分:0 
你程序写得好复杂啊

来找我试试看
2016-08-23 16:28
快速回复:初来乍到来混个脸熟 对VB编程略有基础 希望更加熟练精化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024520 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved