VB 版 (精华区)

发信人: zxfsnow (江南的雪), 信区: VB
标  题: VB自定义数据结构的传输转换(转自东大)
发信站: 哈工大紫丁香 (2000年06月18日12:00:09 星期天), 转信

发信人: tangke (keke), 信区: VB
标  题: VB自定义数据结构的传输转换
发信站: 虎踞龙蟠BBS站 (2000年06月05日18:40:41 星期一), 转信

用VB使用MSCOMM、WINSOCK等控件实现数据传输都方便,但这些控件提供的方法都

只能传输字符串、Byte数组等,没有提供用户自定义数据结构直接传输的方法。但

如果解决了用户自定义数据结构与Byte数组的互相转换,就自然可以实现用户自定

义数据结构的传输了。目前我们使用的转换方法主要是以下两种方法:

---- (1)依靠磁盘文件实现转换:把自定义数据结构的变量(或Byte数组变量)

存入一个用Binary方式打开的数据文件,然后用对应字节数的Byte数组变量(或自

定义数据结构的变量)读出,即可实现用户自定义数据结构与Byte数组的互相转换



---- (2)利用内存拷贝实现转换:用VC编写内存拷贝函数,VB调用该函数,实现

用户自定义数据结构与Byte数组的互相转换。

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

---- (一)程序定义说明

'用户自定义的数据结构
Type myDATE '该自定义的数据结构可以任意复杂和嵌套
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)
MaxLenB = LenB(typeA)
'其中LenB()为VB提供的函数,
返回typeA在内存中的大小,包括元素之间的填塞。
'该例中 MaxLenB = 8
ReDim bArray (MaxLenB) As Byte
'实现用户自定义数据结构typeA到Byte数组bArray()的转换

--

 以科计为本,以产业报国!
  超越自我,飞跃无限!
  

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.249]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.944毫秒