vb Byte数据追加

Dim磁盘缓冲()AsByteDim数据()AsByte如何实现磁盘缓冲=磁盘缓冲+数据类型就1=1+2和在一起就是12我写了局域网文件传输,我想设置下数据到一定大小后写... Dim 磁盘缓冲() As Byte
Dim 数据() As Byte
如何实现 磁盘缓冲=磁盘缓冲+数据
类型就 1=1+2
和在一起就是12
我写了局域网文件传输,我想设置下数据到一定大小后写入磁盘
在网上找了好久了没找到
展开
 我来答
百度网友cc69e68
2016-12-07 · TA获得超过216个赞
知道小有建树答主
回答量:393
采纳率:84%
帮助的人:181万
展开全部
需要用到API 函数:CopyMemory.
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)

dim bytBuff()  as byte        '数据Buff
dim bytRec() as byte        '接收数据的数组
dim bytTmp() as byte        '临时数组
dim lngBuff as long         'Buff数组的长度
dim startIndex as long     '记录Buff数组中开始的位置
dim lngRec as long        '记录接收数据长度.
lngBuff=65536
redim bytBuff(lngBuff-1)
bytRec=收到的数据

if startIndex+ubound(bytRec)+1<lngBuff then
    '检查Buff是否还有足够空间, 如果有则把数据加入Buff.

    CopyMemory bytBuff(startIndex),bytRec(0),ubound(bytRec)+1
    startIndex=startIndex+ubound(bytRec)+1
else
    'Buff数据空间不足

    redim bytTmp(startIndex-1)
    CopyMemory bytTmp(0), bytBuff(0),startIndex    '把数据copy到临时数组
    '保存资料.

    startIndex   =0
    CopyMemory bytBuff(startIndex),bytRec(0),ubound(bytRec)+1
    startIndex=startIndex+ubound(bytRec)+1
end if
lngRec =lngRec +ubound(bytRec)+1    '记录数据接收长度

'检查资料是否完成
'如果接收的数据完成,则把Buff数据写入文件.
if lngRec =文件长度 then
    redim bytTmp(startIndex-1)
    CopyMemory bytTmp(0), bytBuff(0),startIndex    '把数据copy到临时数组
    '保存资料.
end if
更多追问追答
追问
CopyMemory UBound(磁盘缓冲), LBound(传输), UBound(传输)
这句VB为什么会停止工作?
追答
CopyMemory  目的数组地址,源数组地址, 复制的数据长度.

你的写法是错误的,应该写成
CopyMemory 磁盘缓冲(开始位置), 传输(开始位置), UBound(传输)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式