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

高清超速

高清超速

2016-02-19 15:46

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

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

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

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

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

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

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

  (一) 程序定义说明

  用户自定义的数据结构

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

  Bchar As Byte

  fsingle As Single

  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

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

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

  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);}

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
VB自定义数据结构的传输转换

用VB创建自定义的光标

编程语言 网络编程
用VB创建自定义的光标

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

数据结构综述

编程语言 网络编程
数据结构综述

自定义DataSet,并写入数据

编程语言 网络编程
自定义DataSet,并写入数据

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用户自定义的数据库修复

SQLServer
用户自定义的数据库修复

修改自定义数据类型精度

SQLServer
修改自定义数据类型精度

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

关注于使用常用对象来加快Access 2007数据库上

关注于使用常用对象来加快Access 2007数据库上

用VB读取和控制Windows的中文输入法

用VB读取和控制Windows的中文输入法
下拉加载更多内容 ↓