VB自定义数据结构的传输转换

2016-02-19 15:46 5 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的VB自定义数据结构的传输转换,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  用VB使用MSCOMM、WINSOCK等控件实现数据传输都方便,但这些控件提供的方法都只能传输字符串、Byte数组等,没有提供用户自定义数据结构直接传输的方法。但如果解决了用户自定义数据结构与Byte数组的互相转换,就自然可以实现用户自定义数据结构的传输了。

  目前我们使用的转换方法主要是以下两种方法:

  (1) 依靠磁盘文件实现转换:把自定义数据结构的变量(或Byte数组变量)存入一个用Binary方式打开的数据文件,然后用对应字节数的Byte数组变量(或自定义数据结构的变量)读出,即可实现用户自定义数据结构与Byte数组的互相转换。

  (2) 利用内存拷贝实现转换:用VC编写内存拷贝函数,VB调用该函数,实现用户自定义数据结构与Byte数组的互相转换。

  现分别对这两种方法的程序实现详细进行说明。

  (一) 程序定义说明

  用户自定义的数据结构

  Type myDATE 该自定义的数据结构可以任意复杂和嵌套

  Bchar As Byte

  fsingle As Single

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  End Type

  Dim typeA As myDATE 定义自定义数据结构变量

  Dim bArray() As Byte 定义Byte数组变量

  Dim MaxLenB As Long 定义确定Byte数组长度的值

  用内存拷贝实现转换还须如下转换函数说明:

  实现Byte数组到用户自定义数据结构的转换函数Copy_BA

  Public Declare Function Copy_BA Lib "copymem.dll" (ByRef pByte As Byte, ByRef pData As myDATE, ByVal LONG cbSize)

  实现用户自定义数据结构到Byte数组的转换函数Copy_AB

  Public Declare Function Copy_AB Lib " copymem.dll " (ByRef pData As myDATE, ByRef pByte As Byte, ByVal LONG cbSize)

  其中copymem.dll为VC编写的动态连接库

  (二) 依靠磁盘文件实现转换说明

  MaxLenB = Len(typeA)

  其中Len()为VB提供的函数,返回typeA写至文件的大小。

  该例中 MaxLenB = 5

  ReDim bArray(MaxLenB) As Byte

  用户自定义数据结构变量typeA存入文件C:FNANE中

  Open "C: FNANE " For Binary As #1

  Put #1, , typeA

  Close #1

  ..

  从文件C:FNANE中读出字节数组bArray (MaxLenB)

  Open "C: FNANE " For Binary As #1

  Get #1, , bArray

  Close #1

  以上就实现用户自定义数据结构typeA到Byte数组bArray()的转换过程;若想实现Byte数组bArray()? 定义数据结构typeA的转换,只须用以上的方法存入bArray()、读出typeA。该方法程序实现简单,但由于要读写磁盘文件,所以运行速度较慢。

  (三) 利用内存拷贝实现转换说明

  MaxLenB = LenB(typeA)

  其中LenB()为VB提供的函数,返回typeA在内存中的大小,包括元素之间的填塞。

  该例中 MaxLenB = 8

  ReDim bArray (MaxLenB) As Byte

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  实现用户自定义数据结构typeA到Byte数组bArray()的转换

  Call Copy_BA (bArray, typeA, MaxLenB)

  实现Byte数组bArray()到用户自定义数据结构typeA的转换

  Call Copy_AB (typeA,bArray, MaxLenB)

  (四) 用VC编写内存拷贝函数

  用以下两个函数编写成动态连接库:copymem.dll

  

void __stdcall copy_BA(LONG pMem, LONG pSource, LONG cbSize){memcpy((void*)pMem, (void*)pSource, cbSize);}void __stdcall copy_AB(LONG pMem, LONG pSource, LONG cbSize){memcpy((void*)pMem, (void*)pSource, cbSize);}

来源:https://www.tulaoshi.com/n/20160219/1610345.html

延伸阅读
现在,有许多软件安装后会在IE浏览器的工具条上添加一个自定义按钮,为用户运行程序提供了方便,如“网络蚂蚁”、“金山词霸2000”等等。实际上添加这个自定义按钮并不难,只要找到了它在注册表中的位置和有关参数,通过手工或程序都可以轻易完成。而最方便的办法就是调用现成的ActiveX控件来完成这个功能,但Windows似乎没有提供这种控件。下面...
PowerPoint借助自定义形状实现填充自定义图片   具体如何操作呢?以powerpoint2007为例,先在PPT页面中画一Tulaoshi.Com个形状,就像下面这个圆: 然后在形状填充里面选择图片或纹理填充: 插入自文件,选择想要的图片就OK了,就会出现下面的效果: 同样的效果还可以应用于艺术字(文本框不行)。如下: ...
标签: Web开发
一、基本概念: 1.标签(Tag): 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的 2.标签库(Tag library): 由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。 3.标签库描述文件(Tag Library Desc...
标签: Web开发
一、基本概念: 1.标签(Tag): 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的 2.标签库(Tag library): 由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。 3.标签库描述文件(Tag Library Descriptor...
打造自定义的 AfxMessageBox 作者:1.5kg 下载源代码 一、需求 与标准的 MessageBox 相比,MFC提供了 AfxMessageBox 的方法是我们对消息框的变得更加容易。然而简单的 AfxMessageBox 有时已经不能够满足我们的需求了:有时候我仅仅想提示用户一下,并不需要用户确认,也就是说过一段时间消息框...

经验教程

918

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部