1

我有一个 Visual Basic 程序,可以创建半周流程所需的文件。这些文件是 .bas 文件(用于 qbasic)和 .lot 文件(用于 voxco 自动化)。我可以在没有 .bas 文件的情况下生活,只需将其功能直接放入我的程序中即可。但是,我确实需要 .lot 文件。通常这些文件是从旧文件中复制并手动编辑的。正如您可以想象的那样,这很乏味。但是,我的程序创建的文件无法通过我运行它们的任何方式正常运行。当我将手动创建的文件与自动创建的文件进行比较时,差异很小甚至不存在。编码似乎也不是问题。当手动创建的文件工作正常时,我根本不知道为什么我的程序创建的文件不能正常运行。

以下是创建 .lot 文件的代码:

Dim LotText As String
LotText = *removed*
Dim QuLines As String = Nothing
Dim Reader As New StreamReader(LotFilePath & OldStudy & ".LOT")
Dim SLine As String = Nothing
While Not Reader.EndOfStream
    SLine = Reader.ReadLine()
    If SLine.StartsWith("*QU") Then
        QuLines = QuLines & SLine & vbCrLf
    End If
End While
LotText = LotText & QuLines

Dim TempPath As String
TempPath = LotFilePath & "BackEnd\" & StudyID & ".LOT"
My.Computer.FileSystem.WriteAllText(TempPath, LotText, 0)
4

1 回答 1

0

当您说差异很小时-它们到底是什么!?文件开头的单个字符可能会使整个事情失败。

过去我在以这种方式将 vbCrLf 写入文件时遇到过问题;请尝试以下代码,看看它是否提供任何改进。

Dim LotText As String = *removed*
' Create a list of strings for the output data
Dim QuLines As New Collections.Generic.List(Of String)
Dim Reader As New StreamReader(Path.Combine(LotFilePath, OldStudy & ".LOT"))
Dim SLine As String = Nothing
While Not Reader.EndOfStream
    SLine = Reader.ReadLine()
    If SLine.StartsWith("*QU") Then
        ' This line is desired; add it to our output list
        QuLines.Add(SLine)
    End If
End While
' Concatenate the existing data and the output; uses the system defined NewLine
LotText &= Environment.NewLine & String.Join(Environment.Newline, QuLines)

Dim TempPath As String = Path.Combine(LotFilePath, "BackEnd", StudyID & ".LOT")
My.Computer.FileSystem.WriteAllText(TempPath, LotText, 0)
于 2013-09-30T12:43:38.130 回答