代码如下:
     Open file For Input As #1
     Do While Not EOF(1)
        Line Input #1, strline
     Loop
     Close #1
以上代码为逐行读取到strline
我希望从文件最末往前读取,也是逐行读取到strline。
请问怎么处理??

解决方案 »

  1.   

    呵呵,建议你把文件整个读进来,然后再从后面开始读    Dim file As String
        Dim b()  As Byte
        Dim asLines() As String
        Dim i As Long
        
        file = "c:\boot.ini"
        
        ReDim b(FileLen(file) - 1)
        Open file For Binary As #1
        Get #1, , b
        Close #1
        
        asLines = Split(StrConv(b, vbUnicode), vbCrLf)
        
        For i = UBound(asLines) To LBound(asLines) Step -1
            Debug.Print asLines(i)
        Next
      

  2.   

    dim ii as  integer     
    dim strarray() as string 
    Open file For Input As #1
    ii=0
    Do While Not EOF(1)  '取得行数
        ii=ii+1
    Loop
    Close #1
    redim strarray(ii)
    然后把记录按行读入STRARRAY(II)
    在数组中从后向前读。
      

  3.   

    在程序中,你将strline的索引反过来读取strline中的数据不就行了,或是将该数组按索引反过来赋值给另一个数组,示例如下。dim i as integer
    dim j as integer
    dim x() as stringi=strline.ubound
    redim x(i)
    for i=x.ubound to 0
        x(j)=strline(i)
        j=j+1
    next
    strline=x
      

  4.   

    谢谢楼上的兄弟们了,我主要是根据文件本身来考虑效率来的。
    那是个日志文件,我就是不想从头读起,因为明知道前面的纪录是没用的。
    vb不是很熟,那个seek不知道能不能用~~~~~````
      

  5.   

    用seek的前提是你要知道具体的位置。如果你每条日志的记录长度相同,那用seek就比较方便,但如果不一样的话那就有点麻烦了比如你文件1024字节长,最后一条日志纪录26字节长,但是你打开时并不知道最后纪录有多长,于是用binary模式打开文件,seek到离文件尾50个字节的地方,也就是974字节的地方,用get读取50个字节。将读到的内容转成字符串后反向查找回车换行符,然后根据得到的位置信息截取最后的日志纪录