国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VB“變態”用法之有用技術和沒用指針

2019-11-18 17:41:59
字體:
來源:轉載
供稿:網友
BillMcCarthy在那篇《ModifyaVarialbe'sPointer》里用SafeArray實現多進程的數組共享內存,他考慮了數組變量的類型,因此可以兼容大部分數值類型的數組,是一個非常不錯的東西。我這里不講它實現的具體方法,只是想和大家一起看看SafeArray還能做什么。

  修改SafeArray結構的pvData指針卻是一個非常有用的技術,通過修改pvData,就能夠通過數組直接訪問指定的內存。

  和上一篇文章包裝字串指針類一樣,通過修改pvData,我們也可以包裝一些普通數值類型變量的指針類。

  我在指針的第一篇文章里說過,要想實現C語言里'*'這個取指針所指變量值功能,必須要用CopyMemory。實際上,我說錯了,我們完全可以實現和C里一樣的指針,如下:

->//C語言
LongL;
Long*pL=&L;
*pL=12;
CopyMemoryByVal(pSA 12),Target,4

EndProperty

PublicPropertyGetPtr()AsLong
Ptr=m_SA.pvData
EndProperty


PrivateSubClass_Terminate()
CopyMemoryByValVarPtrArray(m_Arr),0&,4
EndSub->

  要將它改成Byte的指針類,只需要將上面的代碼中m_Arr數組的類型,Data屬性和Attach方法中的參數類型改為Byte型即可。

  當我們這樣做出pLong、pByte、pInteger后,我們就能夠玩點和C里一樣的花樣了。

->SubMain()
DimpBAsNewpByte,BAsByte
DimpIAsNewpInteger,IAsInteger
DimpLAsNewpLong,LAsLong

'用Attach方法將經過類型檢查,直接用Ptr屬性則可以繞過類型檢查
pB.AttachB
pI.AttachI
pL.AttachL

'試試指針
B=1
Debug.Print"B=";B;"*pB=";pB

pB=1
Debug.Print"B=";B;"*pB=";pB

I=1000
Debug.Print"I=";I;"*pI=";pI

pI=2000
Debug.Print"I=";I;"*pI=";pI

L=40000
Debug.Print"L=";L;"*pL=";pL

pL=60000
Debug.Print"L=";L;"*pL=";pL

'試試C里的類型轉換
'用Integer指針訪問Long型變量
pI.Ptr=VarPtr(L)
Debug.Print"*pI=";pI

EndSub->

  搞出這幾種普通數值類型的指針類有什么用?基本上沒有什么大用。不過是證明一種方法的可行性,和演示技術。這種技術還有什么用,需要的時候還會再談。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 姚安县| 滁州市| 和平县| 沙田区| 额济纳旗| 大邑县| 潍坊市| 墨脱县| 灌云县| 威远县| 定边县| 神池县| 镇赉县| 句容市| 台安县| 彩票| 石棉县| 通城县| 林甸县| 礼泉县| 浦江县| 类乌齐县| 安泽县| 海丰县| 东乌| 闽侯县| 宜州市| 特克斯县| 厦门市| 长治市| 河津市| 潼南县| 苍梧县| 水城县| 四川省| 泽库县| 盐山县| 邵阳县| 同心县| 仪陇县| 文昌市|