如何在读取一行时将光标放在前面,以便AtEndOfStream检查工作

时间:2015-10-22 19:42:52

标签: vbscript automated-tests qtp

我有一个包含10条记录的文件。我试着用下面的内容阅读它。现在发生的事情是我需要从第一行循环一些公司名称并需要使用该名称创建一个文件(这就是我在if循环中所做的事情)。

Else中,我需要对所有行进行一些数据挖掘,包括已读取的第一行。现在,因为ReadLine读取一行,然后将光标留在行的末尾(在下面的情况下,光标将在测试之后),所以在下面的读取中,顺序将被乱搞1,并且将丢失第一行或最后一行(根据您重新读取该行的位置)。

这仅用于测试(请保留此文件。这是文中提到的示例)

Set tsIn = fso.OpenTextFile("F:kushal\1094c.csv", 1)
Do While Not tsIn.AtEndOfStream 
    If firstRead Then
        l = tsIn.Skipline ' skip the header row
        l = tsIn.Readline
        dim tsOut : Set tsOut = fso.CreateTextFile("..\HCR Files\" & _
            ucase(formatFileDate(getSafeString(l))) & ".e", true, tristatefalse)
    Else
        l = tsIn.Readline
        l = left(l, (len(l) - 1))
        l = split(l, chr(34) & "," & chr(34))
        'All other stuff
    End if
Loop

1 个答案:

答案 0 :(得分:2)

Dim tsOut, firstRead

Set tsIn = fso.OpenTextFile("F:kushal\1094c.csv", 1)

If Not tsIn.AtEndOfStream Then tsIn.Skipline  'skip the header row

firstRead = True

Do While Not tsIn.AtEndOfStream 

    l = tsIn.Readline

    'save the first line
    If firstRead Then
        Set tsOut = fso.CreateTextFile("..\HCR Files\" & _
                   ucase(formatFileDate(getSafeString(l))) & _
                    ".e", true, tristatefalse)
        firstRead = False
    End If

    l = left(l, (len(l) - 1))
    l = split(l, chr(34) & "," & chr(34))
    'etc etc

Loop