| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2089 人关注过本帖
标题:读取多个文件按行读取一个文件一行怎么不行能呢?
只看楼主 加入收藏
VBnext
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-4-24
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:3 
读取多个文件按行读取一个文件一行怎么不行能呢?
读取.log文件,为什么程序执行到       Line Input #1, strtemp
strTemp读取的字符串内容要比用UltraEdit工具打开的.log文件一行要多很多内容?如用UltraEdit工具打开的.log第一行内容<IOEXP;
而程序读取缺内容很多。请问这是什么问题呢?
程序如下:

Private Sub cddd_Click()
Dim a() As String
Dim filemanyaddress, files, strfilename, i, fn
Dim strtemp As String
    With CommonDialog1
        .DialogTitle = "打开"
        .CancelError = False
        .Filter = "all log (*.log)|*.*"
        .Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
        .ShowOpen
        If Len(.FileName) = 0 Then
          Exit Sub
        End If
          filemanyaddress = .FileName
    End With
   
    files = Split(filemanyaddress, Chr(0))
    ReDim a(UBound(files))
        For i = 1 To UBound(files)
        a(i) = files(0) & "\" & files(i)
        Next i
''---------------------------------------------------------------------------------------------------------
 For fn = 1 To UBound(a)
     Dim s As String
     Open a(fn) For Binary As #1
     Do While Not EOF(1)
       Line Input #1, strtemp(出现问题)
       MsgBox strtemp
         Select Case strtemp
                    Case "<RLCFP:CELL=ALL;"
                       Call RLCFP
                    Case "<RLDEP:CELL=ALL;"
                        Call RLDEP
                    Case "<RLNRP:CELL=ALL;"
                        Call RLNRP
            End Select
     Loop
     Close #1
 Next fn
End Sub
请大手子帮忙看看?读取文件如下:
CDDlog.rar (579.75 KB)
搜索更多相关主题的帖子: 字符串 files False 
2013-07-10 17:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:14 
回复 楼主 VBnext
没看代码,只看了你的附件。

你的附件的格式是 UNIX 的文本格式,在WIN平台下面有兼容性问题的。
注意图中 划了蓝线的地方。
图片附件: 游客没有浏览图片的权限,请 登录注册


VB6 里,换行符是 VBCRLF ,chr(13) & chr(10) ,&H0D0A , 也是 DOS平台,WIN平台的通用换行符。
VB6也是遵守这个规定,所以 line input 读取时,也是按这个规定来确认一行的结束。

在 UNIX 系统中, 换行符是  VBLF ,也就是 chr(10) ,&H0A 。

在你上传的 LOG 文件中,你注意看一下,划蓝线的地方就是 你在 UltraEdit 中看到的 换行的地方。
UltraEdit 支持打开 UNIX 系统的文本,也支持这种格式的保存。

在VB6中,如果你要使用这种的 文件,就必须自己重写 line input 函数的功能的函数。函数的核心算法就是
按二进制文件打开,然后一个字节一个字节的向后读,读到 VBLF 时,停止读取,保存读取的位置,把前面读到的数据全部拼到一起,返回。

授人于鱼,不如授人于渔
早已停用QQ了
2013-07-11 08:29
VBnext
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-4-24
收藏
得分:0 
没人能回答吗??????
2013-07-12 10:55
VBnext
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2013-4-24
收藏
得分:0 
回复 2楼 风吹过b
您好!我利用FileSystemObject可以直接读取该.log文件安行读取
可是我遇到问题是:
我想把.log文件的内容:
<RLCFP:CELL=ALL;
CELL CONFIGURATION FREQUENCY DATA

CELL
D088041

CHGR   SCTYPE    SDCCH   SDCCHAC   TN   CBCH     HSN   HOP  DCHNO
 0                3       0        1    NO       56    ON    512
                                   3                         551
                                   5                         557
                                   7
 1                0       0        2    NO       16    OFF   548
整理为如下:
 BSC       CELL    CHGR    SCTYPE    SDCCH    SDCCHAC    TN       CBCH    HSN    HOP    DCHNO
TABS33    D088041    0                 3        0     1 3 5 7     NO     56      ON     512 551 557
TABS33    D088041    1                 0        0      2          NO     16      OFF    548
当读到第一行:( 0                3       0        1    NO       56    ON    512
)是长度和第二行的字符串的长度不一致,而且只能用空格把该行字符串拆分

程序如下:
Private Sub cddd_Click()
Dim a() As String
Dim filemanyaddress, files, strfilename, i, j, fn, ln
Dim strtemp As String, MyStr As String, MyCell As String, xChar As String

Dim frArray() As String, temp(5) As String
Dim fso As Object
Dim inputFile As Object

    With CommonDialog1
        .DialogTitle = "打开"
        .CancelError = False
        .Filter = "all log (*.log)|*.*"
        .Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer
        .ShowOpen
        If Len(.FileName) = 0 Then
          Exit Sub
        End If
          filemanyaddress = .FileName
    End With
   
    files = Split(filemanyaddress, Chr(0))
    ReDim a(UBound(files))
        For i = 1 To UBound(files)
        a(i) = files(0) & "\" & files(i)
        Next i
'    --------------------------------------------------------------------------------------------------------
 For fn = 1 To UBound(a)
 
     Set fso = CreateObject("Scripting.FileSystemObject")
     Set inputFile = fso.OpenTextFile(a(fn))
     Do While Not inputFile.atEndOfStream
       MyStr = inputFile.readLine()
  
        Select Case MyStr

'    --------------------------------------------------------------------------------------------------------
            Case "<RLCFP:CELL=ALL;"
              Do While Not inputFile.atEndOfStream
               
                MyStr = inputFile.readLine()
                 MsgBox (MyStr)
                    
                    If MyStr = "END" Then Exit Sub
                    If MyStr = "CELL" Then temp(0) = inputFile.readLine()
                    If MyStr = "CHGR   SCTYPE    SDCCH   SDCCHAC   TN   CBCH     HSN   HOP  DCHNO" Then
                        
                          Do While Not inputFile.atEndOfStream
                                MyStr = inputFile.readLine()
                                If Len(MyStr) = 0 Then Exit Do

                                If MyStr = "END" Or MyStr = "FAULT INTERRUPT" Then Exit Sub

                                  For j = 1 To Len(MyStr)
                                    xChar = Mid(MyStr, j, 1)
                                    If Asc(xChar) <> 10 Then
                                      MyCell = MyCell & vbCrLf & xChar
                                    End If
                                    
                                  Next
                                MsgBox (MyCell)
                               frArray = Split(MyCell, vbCrLf)
                          Loop
                    End If

               Loop
            Case "<RLNRP:CELL=ALL"
            
            Case "<RLDEP:CELL=ALL"
         End Select
     Loop
   
 Next fn
End Sub
请帮帮看看,该怎样解决?
2013-07-12 11:29
快速回复:读取多个文件按行读取一个文件一行怎么不行能呢?
数据加载中...
 
   



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

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