标题:能用二进制访问形式读取一字符串吗,能把一字符串写入文件中吗
只看楼主
燕之峰
Rank: 2
等 级:论坛游民
帖 子:146
专家分:63
注 册:2014-3-21
结帖率:100%
已结贴  问题点数:5 回复次数:4 
能用二进制访问形式读取一字符串吗,能把一字符串写入文件中吗
各位网友好,有用二进制访问形式,由一个文件读取内容,把内容写到另一个文件中。但对于一字符串,能不能用二进制访问形式读取它。用二进制访问形式,把一字符串内容写入文件中。请指导,写出有关代码。谢谢。
另外,用二进制访问形式,如何把文件中的内容写入字符串中。

[ 本帖最后由 燕之峰 于 2014-4-26 20:34 编辑 ]
搜索更多相关主题的帖子: 二进制 字符串 如何 友好 
2014-04-26 19:47
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
如果字符串是定长,那么可以使用定长的字符串或BYTE数组变量去读。如果不是定长,那只能使用BYTE数组读了。
先修改数组大小,再读数据。

授人于鱼,不如授人于渔
早已停用QQ了
2014-04-26 20:18
燕之峰
Rank: 2
等 级:论坛游民
帖 子:146
专家分:63
注 册:2014-3-21
得分:0 
各位老师给解答一下啊,要用
2014-04-27 15:09
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
定长:

dim S as string * 255
s= "sdsdfsdb"
把S直接写入文件和读取,都没任何问题。因为S 是定长的。
len(s)=255                  '长度固定为 255 ,不伦里面的值如何。
asc(mid(s,20,1)=0           '超过了给的值后,以 chr(0) 进行填充。

dim s() as byte
s="sdsdfsdb"
len(s)=8            'Byte数组,使用时与 字符串类型非常相似,差别很小
把s保存起来,只会占 8 个字节。
     如  Put #1, , s
读取时:
redim s(0 to 7)    '先定义占用空间
然后再读,就只会读 8 个字节。
     如  Get #1, , s

不定长,可以按下面的例子看

----------------------------
前面写的二个函数,不解释

Public Sub 保存(file As String)
'File :文件名
'文件结构:
'    BJ As String * 8        'ImgIndex
'    页数 As Integer
'    横排列 As Integer
'    纵排列 As Integer
'    纸号 As Integer
'    页数据() As 页数据结构

'    BJ As String * 4         'Page
'    filelen As Long
'    Filestr As String
'    prlen As Long
'    pr() As Byte

If Dir(file) <> "" Then
    Kill file
End If

Dim i As Long

With FileData
Open file For Binary As #1
    Put #1, , .BJ
    Put #1, , .页数
    Put #1, , .纸号
    Put #1, , .横排列
    Put #1, , .纵排列
    For i = 1 To .页数
        Put #1, , .页数据(i).BJ
        Put #1, , .页数据(i).filelen          '先写入长度
        Put #1, , .页数据(i).Filestr          '不定长字符串
        Put #1, , .页数据(i).prlen            '先写入长度
        Put #1, , .页数据(i).pr               '不定长BYTE数组
    Next i
Close #1
End With

End Sub

Public Sub 打开(cs As String)
If Dir(cs) <> "" Then
Dim i As Long
With FileData
    Open cs For Binary As #1
        Get #1, , .BJ
        Get #1, , .页数
        Get #1, , .纸号
        Get #1, , .横排列
        Get #1, , .纵排列
        ReDim .页数据(1 To .页数)             '读到总页数,重定义数组
        For i = 1 To .页数
            Get #1, , .页数据(i).BJ
            Get #1, , .页数据(i).filelen        '读长度
            .页数据(i).Filestr = Input(.页数据(i).filelen, #1)        '读指定多个字符个数
            Get #1, , .页数据(i).prlen            '读长度
            ReDim .页数据(i).pr(.页数据(i).prlen)    '重定义数组
            Get #1, , .页数据(i).pr                '读 BYTE 数组
        Next i
            
    Close #1
End With

Else
    MsgBox "文件不存在", vbCritical, "错误"
End If
End Sub

已精简代码,删除校验文件标记和页标记部分

授人于鱼,不如授人于渔
早已停用QQ了
2014-04-27 17:50
燕之峰
Rank: 2
等 级:论坛游民
帖 子:146
专家分:63
注 册:2014-3-21
得分:0 
谢谢
2014-04-28 07:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430691-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121606 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved