VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3215|回复: 11

读文件,取出后发现少了一个字节,这是怎么回事?

[复制链接]

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-12-10 09:30:01 | 显示全部楼层 |阅读模式
我自定义如下:
Type fle_2
  aa(23)    As Integer
  bb(23)   As Integer
  cc(23)  As Integer
  dd(23)  As Integer
。。。。。
。。。。
End Type
                         注:     '''''''''''''''''''''以上共352字节
Type str_Message
  strMessage     As String
End Type

Public FleThr       As fle_2
Public FleThrO      As str_Message


然后读文件:
    Open strfPaht For Binary As #1
         Get #1, 1, FleThr
         Get #1, 352, FleThrO
    Close #1


问题是FleThrO.strMessage中存取的数据  第一位没有了,不见了


请问这是为什么呢?

先谢谢喽
回复

使用道具 举报

1

主题

11

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-12-10 09:45:01 | 显示全部楼层
Get #1, 1, FleThr
改成
Get #1, 0, FleThr
回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-12-10 11:00:02 | 显示全部楼层
楼上:
   跟以前一样的效果啊
回复

使用道具 举报

1

主题

11

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-12-10 11:15:02 | 显示全部楼层
你第一个字节是什么内容
是不是空的?
回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-12-10 11:30:01 | 显示全部楼层
FleThrO.strMessage  中的第一个字节转换成字符型是“M”  不是空
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-12-10 11:45:01 | 显示全部楼层
Open strfPaht For Binary As #1
         Get #1, 1, FleThr    ''既然已经读了352个字节,那
         Get #1, 352, FleThrO  ''下面是不是应该从353开始读了。
    Close #1
回复

使用道具 举报

1

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-12-10 12:00:01 | 显示全部楼层
楼上:
   刚开始 我也是从  353 开始读的,可是那样出来后,是少2个字节。
   从352开始,就少1个字节。
   从351开始,就什么都没有啦
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-12-10 12:15:02 | 显示全部楼层
干脆什么都不用试试,如果这样也出问题,可能是你写数据时出错了。

Open strfPaht For Binary As #1
         Get #1, , FleThr    ''既然已经读了352个字节,那
         Get #1, , FleThrO  ''下面是不是应该从353开始读了。
    Close #1
回复

使用道具 举报

0

主题

9

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-12-10 12:30:01 | 显示全部楼层
Type str_Message
  strMessage     As String
End Type
应该跟这个定义有关系,strMessage如果是定长字符串应该不会发生这个问题
使用变长字符串,有可能会把第一个字符当成长度描述符解释,因此会丢掉第一个字符
回复

使用道具 举报

0

主题

18

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-12-10 12:45:01 | 显示全部楼层
Type str_Message
  strMessage()     As byte
End Type

Public FleThr       As fle_2
Public FleThrO      As str_Message


然后读文件:
    Open strfPaht For Binary As #1
         Get #1, 1, FleThr
         Get #1, 1+len(FleThr), FleThrO.strMessage
    Close #1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表