我的visual basic程序正在不正确地创建文件,它们无法通过其他程序正常运行

时间:2013-09-30 12:33:05

标签: vb.net visual-studio-2010 automation hex vb.net-2010

我有一个可视化的基本程序,可以创建半周过程所必需的文件。这些文件是.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)

1 个答案:

答案 0 :(得分: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)