熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

VB也能訪問內存

2013-11-15 12:47:44  來源: ASP編程 

  有人說vb不能操作內存效率低下我不是太贊同vb跟c比當然效率比較低下了但是如果使用得當還是有不少的效率提高的

  在開發windows上的應用時(注意啊不是驅動)理論上來說用vb可以做任何軟件因為vb本身沒有的可以使用api而win api時可以實現windows上的任何應用功能的當然這和使用者的功力有很大的關系如果c/c++的功力很好你甚至可以用vb實現內存拷貝的功能因為long類型可以做指針

  最近在做界面 對vb有點研究 給個例子吧比如進制轉換進制

  用vb的一般用除法這麼做

  public function ob(byval long nValue) as string

  dim nValueCopy as long

  dim nTmp as byte

  dim sReturn as string 返回值

  nValueCopy = nValue

  也有用nValue ^N 方式的這裡就不多說了

  do while nValueCopy >

  nTmp = nValueCopy /

  sReturn = cstr( nValueCopy nTmp / ) & sReturn  反向累計

  nValueCopy = nTmp

  loop

  ob = sReturn

  end function

  而用c比較熟的人一般按位去做

  public function ob(byref long nValue) as string

  dim nBit( to ) as byte       最小的單位是byte了放掩碼

  dim nByte( to ) as byte     分解nValue到字節的

  dim nTmp as byte

  dim pValue as long                指針

  dim sReturn as string             返回值

  dim i as byte j as byte

  nBit() =            

  nBit() =            

  nBit() =            

  nBit() =            

  nBit() =           

  nBit() =           

  nBit() =           

  nBit() =         

   取 nValue 的地址

  pValue = VarPtr( nValue )

   win api 將nValue的個字節分別復制到nByte中byref 就相當於指針

  CopyMemory( nByte( byref pValue

  for i = to       低字節在前

  for j = to     高位開始

   方法一 減法

  nTmp =

  if nByte(i) > nBit(j) then

  nByte = nByte(i) nBit(j)

  nTmp =            這一位二進制是

  end if

  sReturn = sReturn & cstr(nTmp)

   方法二按位與 效率更高

  nTmp =

  if ( not ( nByte(i) imp nBit(j) ) ) = nBit(j) then

   我沒有找到vb按位與的函數只有按位同與(不記得是不是)的imp

  nTmp =

  end if

  sReturn = sReturn & cstr(nTmp)

  next j i

  ob = sReturn

  end function

  在網吧裡沒有環境隨手寫寫有錯誤請見諒主要是思路


From:http://tw.wingwit.com/Article/program/ASP/201311/21655.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.