注册 登录
编程论坛 VB6论坛

能用二进制访问形式读取一字符串吗,能把一字符串写入文件中吗

燕之峰 发布于 2014-04-26 19:47, 390 次点击
各位网友好,有用二进制访问形式,由一个文件读取内容,把内容写到另一个文件中。但对于一字符串,能不能用二进制访问形式读取它。用二进制访问形式,把一字符串内容写入文件中。请指导,写出有关代码。谢谢。
另外,用二进制访问形式,如何把文件中的内容写入字符串中。

[ 本帖最后由 燕之峰 于 2014-4-26 20:34 编辑 ]
4 回复
#2
风吹过b2014-04-26 20:18
如果字符串是定长,那么可以使用定长的字符串或BYTE数组变量去读。如果不是定长,那只能使用BYTE数组读了。
先修改数组大小,再读数据。
#3
燕之峰2014-04-27 15:09
各位老师给解答一下啊,要用
#4
风吹过b2014-04-27 17:50
定长:

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

已精简代码,删除校验文件标记和页标记部分
#5
燕之峰2014-04-28 07:55
谢谢
1