我在程序中设置了一个Long整型变量a,一个String 变量b
Private Sub Command1_Click()
    Dim a As Long
    a = 5
    Dim b As String
    b = "bbb"
    fHndl = FreeFile(0)
    Open "c:\a.a" For Binary As fHndl
    Put #fHndl, , a
    Put #fHndl, , b
    Close #fHndl
End Sub但读出来的时候,只见a,的值,B为空,请教大家怎么读不出来
Private Sub Command2_Click()
    Dim a As Long
    Dim b As String
    fHndl = FreeFile(0)
    Open "c:\a.a" For Binary As fHndl
    Get #fHndl, , a
    Get #fHndl, , b
    Close #fHndl
End Sub

解决方案 »

  1.   


    Private Sub Command1_Click()
        Dim a As Long
        a = 5
        Dim b As String
        b = "bbb"
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Put #fHndl, , a
        Put #fHndl, , b
        Close #fHndl
    End Sub'但读出来的时候,只见a,的值,B为空,请教大家怎么读不出来
    Private Sub Command2_Click()
        Dim a As Long
        Dim b As Long
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Get #fHndl, , a
        Get #fHndl, , b
        Close #fHnd
        
     
        MsgBox a
        MsgBox Chr(b Mod 256) & Chr(Int(b / 256) Mod 256) & Chr(int(b / 256 / 256) mod 256)
    End Sub
    '但是用以下方法也行.
    Private Sub Command2_Click()
        Dim a As Long
        Dim b As String * 4  '设置字符型数据有几个字节, 以便于以多少个字节读取数据.
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Get #fHndl, , a
        Get #fHndl, , b
        Close #fHnd
        
         MsgBox a
        MsgBox b
    End Sub
      

  2.   

    Private Sub Command1_Click()
        Dim a As Long
        a = 5
        Dim b As String
        b = "bbbd"
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Put #fHndl, , a
        Put #fHndl, , b
        Close #fHndl
    End Sub
    Private Sub Command3_Click()
        Dim a As Long
        Dim b As Long  '最多读出四位字符 '如果是汉字以下的读出规则就变为二个字节一个字符
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Get #fHndl, , a
        Get #fHndl, , b
        Close #fHnd
        
     
        '因为二进制读取,因此读出来的数据是数据,不是字符型的,因此要变为字符型 要进行转换
        MsgBox a
        MsgBox Chr(b Mod 256) & Chr(Int(b / 256) Mod 256) & Chr(Int(b / 256 / 256) Mod 256) & Chr(Int(b / 256 / 256 / 256))
    End Sub
    '用以下方法也行
    Private Sub Command2_Click()
        Dim a As Long
        Dim b As String * 4 '最多读出四位字符 '如果是汉字以下的读出规则就变为二个字节一个字符
        fHndl = FreeFile(0)
        Open "c:\a.a" For Binary As fHndl
        Get #fHndl, , a
        Get #fHndl, , b
        Close #fHnd
        
         MsgBox a
        MsgBox b
    End Sub
      

  3.   

    建议你用 Input 或 Output 的方式对文件进行处理.
    这样就不用担心因为数据类型不同,而出现问题了.
      

  4.   

    //A为什么不用做特别设置呢A是已知长度的变量,4字节(LONG)B是变长字符串,是COM中的BSTR类型,结构为一个前导长度(4字节)+实际字符存储区.写入时,PUT能自动将这些可识别的变量分配好空间并写进去....但是读的时候.....GET是根据"瓶子"的大小来"装水"的,你拿给它多大的"瓶子",它就装多少"水".所以你在第一个字节时拿了4字节的LONG让它装,它当然就装了4字节内容回来.但是第二个B,实际是空长度,是一个没有空间的瓶子,那当然就没有罗....对于这种情况,你得在文件里存储瓶子的大小才行.Put #fHndl, , b这句之前,先:Put #fHndl, , clng(lenb(b))长度先写入,再写入实际内容,读的时候就OK了:Get #fHndl, , b 在这之前,先读长度:dim lLen as longGet #fHndl, , lLen
    b=space(lLen)
    Get #fHndl, , b 就行了.不过这样的话比较麻烦,VB6对于已知的数据类型其实是可以自动处理好的.那么,这里就有一个技巧,我常用这个方法来批量保存程序配置信息.这主要是利用自定义类型,具体请看代码:private type MyConfig
        bIsAutoRun as boolean
        bIsHide as boolean
        sUserName as string
        sSN as string
        lX as long
        lY as long
    end typedim varConfig as myconfigwith varconfig
        .lx=123
        .ly=456
        .sUsername="嗷嗷叫的老马"
        .sSN = "XXXX-XXXX-XXXX-XXXX"
        ......................
    end with写的情况:open "xx" for binary as #1
        put #1,,varconfig
    close #1
    读的情况:open "xx" for binary as #1
        get #1,,varconfig
    close #1
    很方便吧,哈哈.这比起使用INI更加方便了