转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB也能访问内存         ★★★★

VB也能访问内存

作者:闵涛 文章来源:闵涛的学习笔记 点击数:951 更新时间:2009/4/23 16:38:16

    有人说vb不能操作内存,效率低下,我不是太赞同.vb跟c比当然效率比较低下了,但是如果使用得当还是有不少的效率提高的.

     在开发windows上的应用时(注意啊,不是驱动),理论上来说,用vb可以做任何软件.因为vb本身没有的,可以使用api,而win32 api时可以实现windows上的任何应用功能的.当然这和使用者的功力有很大的关系,如果c/c++的功力很好,你甚至可以用vb实现内存拷贝的功能,因为long类型可以做指针.

     最近在做界面, 对vb有点研究, 给个例子吧.比如10进制转换2进制.

     用vb的一般用除法这么做:
public function o2b(byval long nValue) as string
     dim nValueCopy as long
     dim nTmp as byte ''''商
    dim sReturn as string ''''返回值
    nValueCopy = nValue

     ''''也有用nValue - 2^N 方式的,这里就不多说了

    do while nValueCopy > 0
          nTmp = nValueCopy / 2          
          sReturn = cstr( nValueCopy - nTmp / 2 ) & sReturn  ''''反向累计
        nValueCopy = nTmp
     loop
 
     o2b = sReturn


end function

     而用c比较熟的人一般按位去做:
public function o2b(byref long nValue) as string
     dim nBit( 0 to 7 ) as byte       '''' 最小的单位是byte了,放掩码
    dim nByte( 1 to 4 ) as byte     '''' 分解nValue到字节的
    dim nTmp as byte
     dim pValue as long                '''' 指针
     dim sReturn as string             '''' 返回值
    dim i as byte, j as byte

     nBit(0) = 1            ''''00000001 
     nBit(1) = 2            ''''00000010
     nBit(2) = 4            ''''00000100
     nBit(3) = 8            ''''00001000
     nBit(4) = 16           ''''00010000
     nBit(5) = 32           ''''00100000
     nBit(6) = 64           ''''01000000
     nBit(7) = 128         ''''10000000

     '''' 取 nValue 的地址
     pValue = VarPtr( nValue )

     '''' win32 api, 将nValue的4个字节分别复制到nByte中,byref 就相当于指针
    CopyMemory( nByte(1), byref pValue, 4 )

     for i = 4 to 1      ''''低字节在前
       for j = 7 to 0    ''''高位开始
         '''' 方法一, 减法
         nTmp = 0
              if nByte(i) > nBit(j) then
                  nByte = nByte(i) - nBit(j)
                  nTmp = 1           '''' 这一位二进制是1
              end if
              sReturn = sReturn & cstr(nTmp)

              '''' 方法二,按位与 效率更高
        nTmp = 1
              if ( not ( nByte(i) imp nBit(j) ) ) = nBit(j) then
              '''' 我没有找到vb按位与的函数,只有按位"同与"(不记得是不是)的imp
                   nTmp = 0
              end if
              sReturn = sReturn & cstr(nTmp)

     next j, i

     o2b = sReturn

end function

在网吧里,没有环境,随手写写,有错误请见谅,主要是思路.


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台