看看script.txt的每行是不是以回车符结尾。

解决方案 »

  1.   

    去掉On Error GoTo errorhandler
    然后你一定会有错误的
      

  2.   

    Dim TextLine
    Open "TESTFILE" For Input As #1   ' 打开文件。
    Do While Not EOF(1)   ' 循环至文件尾。
       Line Input #1, TextLine   ' 读入一行数据并将其赋予某变量。
       Debug.Print TextLine   ' 在立即窗口中显示数据。
    Loop
    Close #1   ' 关闭文件。
      

  3.   

    请问bucher兄,难道不是定义的一个结构,line input就不行了吗?我真的不明白!
      

  4.   

    大家请看,现在我把代码改写成这样依然无法读出txt中的字符窜!:
    Public Function loadline(fnamea As String, mon As String, tue As String, _
    wed As String, thu As String, fri As String, sat As String, sun As String, _
    pdefault As String, runon As String, daten As String) As Boolean
    Dim kg(8) As String
    Dim i As Integer
    i = 0
    On Error GoTo errorhandler
    Open App.Path + "\script.txt" For Input As #1
      Do Until EOF(1)
      Line Input #1, kg(i)
      i = i + 1
      Loop
      Debug.Print kg(8)
       tue = kg(0)
       wed = kg(1)
       thu = kg(2)
      fri = kg(3)
       sat = kg(4)
      sun = kg(5)
       pdefault = kg(6)
       runon = kg(7)
       daten = kg(8)   
    errorhandler: On Error Resume Next
    Close #1
    End Function
    我真是想破了头皮都不得其解,各位帮帮我!各位帮帮我!各位帮帮我!
    各位帮帮我!各位帮帮我!各位帮帮我!
      

  5.   

    TNND,忘了提交了,只好重写一遍用你的代码我并没发现问题,每行都能读出
    应该不是这个地方的问题Try 把#1改为FreeFile;或者把script.txt的内容列出来
      

  6.   


    classmodule
    Command2(0)
    Command2(1)
    Command2(2)
    Command1(0)
    Command1(1)
    Command1(2)
    Command1(3)
    txt
    Frame1
    List1
    Label1
    Frame2Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)    'SendMessage函数用法见《visual basic 与 windows API 讲座》148页Const EM_GETLINECOUNT = &HBA    '计算text的总行数Const EM_GETLINE = &HC4          '读取text一行的字符串Const EM_LINEINDEX = &HBB        '读取某一行第一个字符在text中的索引Const EM_LINELENGTH = &HC1       '读取某一字符所在的行的字符数Const EM_SCROLL = &HB5         '以行或页为单位卷动text,具体可以设置成以下值
    Const SB_LINEUP = 0            '上卷一行Const SB_LINEDOWN = 1          '下卷一行Const SB_PAGEDOWN = 3          '下翻一页Const SB_PAGEUP = 2            '上翻一页Public Sub TextBoxScroll(txt As TextBox, SetScroll As Integer)
        '参数1:textbox的hwnd
         '参数2:textbox要执行的动作
         Select Case SetScroll
             Case 0           '上卷一行
                 SendMessage txt.hwnd, EM_SCROLL, SB_LINEUP, ByVal 0&
             Case 1           '下卷一行
                SendMessage txt.hwnd, EM_SCROLL, SB_LINEDOWN, ByVal 0&
            Case 2             '上翻一页
                SendMessage txt.hwnd, EM_SCROLL, SB_PAGEUP, ByVal 0&
            Case 3              '下翻一页
                SendMessage txt.hwnd, EM_SCROLL, SB_PAGEDOWN, ByVal 0&
        End Select
    End SubPublic Function TextBoxLineCount(txt As TextBox) As Long
             '返回text的总行数
             '参数:textbox的hwnd
        TextBoxLineCount = SendMessage(txt.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
    End FunctionPublic Function GetTextBoxIndex(txt As TextBox, GetLine As Long) As Long
         '返回某一行第一个字符在text中的索引
         '参数1:textbox的hwnd
         '参数2:要读取的行
         GetTextBoxIndex = SendMessage(txt.hwnd, EM_LINEINDEX, GetLine, ByVal 0&)
    End FunctionPublic Function GetLineCharCount(txt As TextBox, GetTextBoxIndex As Long) As Long
         '读取某一行的字符个数
         '参数1:textbox的hwnd
         '参数2:要读取的行在text中的索引
         GetLineCharCount = SendMessage(txt.hwnd, EM_LINELENGTH, GetTextBoxIndex, ByVal 0&)
    End FunctionPublic Function GetLineChar(txt As TextBox, GetTextBoxIndex As Long) As String
         '读取某一行的字符
         '参数1:textbox的hwnd
         '参数2:要读取的行在text中的索引
           Dim s As String
           Dim Length As Long    '文本的长度
           Length = SendMessage(txt.hwnd, EM_LINELENGTH, GetTextBoxIndex, ByVal 0&)
           s = String(Length, Chr(0))     '配置字符串
           RtlMoveMemory ByVal s, Length, 2    '填入存储器的长度,必须的
           SendMessage txt.hwnd, EM_GETLINE, GetTextBoxIndex, ByVal s
           GetLineChar = s
    End Function
    =============
    Option ExplicitPrivate Sub Command1_Click(Index As Integer)
         Dim txtMessage As txtNewClass
         Set txtMessage = New txtNewClass
         txtMessage.TextBoxScroll txt, Index
    End SubPrivate Sub Command2_Click(Index As Integer)
        Dim i As Long
        Dim s As Long
        Dim GetTextBoxMessage As Long
        Dim GetTextBoxString As String
        Dim txtmsg_API As txtNewClass
        Set txtmsg_API = New txtNewClass
        s = List1.Text
        Select Case Index
            Case 0
                i = GetTxtIndex
                GetTextBoxString = txtmsg_API.GetLineChar(txt, Val(s))
                MsgBox "文本框中行号为" & s & ",索引号为" & i & " 的字符串是:" & vbCrLf & GetTextBoxString, vbOKOnly, "获得字符串"
            Case 1
                GetTextBoxMessage = txtmsg_API.TextBoxLineCount(txt)
                MsgBox "文本框的总行数为" & vbCrLf & GetTextBoxMessage, vbOKOnly, "获得字符的行数"
            Case 2
                i = GetTxtIndex
                GetTextBoxMessage = txtmsg_API.GetLineCharCount(txt, i)
                MsgBox "文本框中行号为" & s & "行索引号为" & i & "的行有" & GetTextBoxMessage & "个字符", vbOKOnly, "获得字符的个数"
            End Select
    End SubPublic Static Function GetTxtIndex() As Long
    On Error GoTo MoveErr
         Dim x As Long
         Dim txtmsg_API As txtNewClass
         Set txtmsg_API = New txtNewClass
          x = List1.Text
         GetTxtIndex = txtmsg_API.GetTextBoxIndex(txt, x)
         Exit Function
    MoveErr:
        Exit Function
    End FunctionPrivate Sub Form_Load()
        txt.Text = "0.abcdefghijklmnopqrstuvwxyz" & vbCrLf _
                  & "1.abcdefghijklmnopqrstuvwxy" & vbCrLf _
                  & "2.abcdefghijklmnopqrstuvwx" & vbCrLf _
                  & "3.abcdefghijklmnopqrstuvw" & vbCrLf _
                  & "4.abcdefghijklmnopqrstu" & vbCrLf _
                  & "5.abcdefghijklmnopqrst" & vbCrLf _
                  & "6.abcdefghijklmnopqrs" & vbCrLf _
                  & "7.abcdefghijklmnopqr" & vbCrLf _
                  & "8.abcdefghijklmnopq"
    End Sub
    Private Sub txt_Change()
         Dim i As Long
         Dim txtmsg As txtNewClass
         Set txtmsg = New txtNewClass
         Dim TextBoxLineCount As Long
         List1.Clear
         TextBoxLineCount = txtmsg.TextBoxLineCount(txt)
             For i = 0 To TextBoxLineCount - 1
                 List1.AddItem i
             Next i
             List1.ListIndex = 0
    End Sub
      

  7.   

    楼上的老兄,真是挺热心的,不过我得漫漫琢磨,加分有你一分,不管怎么说。
    不过说实话,我还是打算用open filename  as ...  比较明朗,
    欢迎各位提供读取每一行的代码,谢谢!
      

  8.   

    不过说实话,我还是打算用open filename  as ...  比较明朗,
    欢迎各位提供读取每一行的代码,谢谢! 
      

  9.   

    你的循环语句有问题,最好改成如下
    Do while not  EOF(1)
        Line Input #1, TextLine
    Loop
      
      

  10.   

    也许文件号1有冲突
    Dim intHandle As Integer    
    intHandle = FreeFile     
    Open "TESTFILE" For Input As #intHandle
    .....
    Close #intHandle
      

  11.   

    哈哈,我已经自己解决了,原来是在调用函数时,不能以text1.text传递值,而只能用text1,以对象来传递!