以下代码从包含每行两个数字到X和Y的文本文件中读取值(在循环中)。循环的第一次迭代为X和Y提供正确的值(70,210)。在下一次迭代之后,X和Y值不是文件中包含的值(210,210用于第二次迭代而不是0,210)。我犯了一个错误,但我似乎无法找到它!
Sub main()
Dim X As Double
Dim Y As Double
Open "perforatedcircles.txt" For Input As #1
Do While Not EOF(1)
Input #1, X, Y
Loop
Close #1
End Sub
“perforatedcircles.txt”的样本内容:
70.000 210.000
0.000 210.000
-70.000 -210.000
答案 0 :(得分:0)
输入文件是如何创建的?它看起来与Input#directive期望的格式不同。
https://msdn.microsoft.com/en-us/library/aa243386(v=vs.60).aspx
"使用Input#读取的数据通常写入具有Write#的文件。仅对在输入或二进制模式下打开的文件使用此语句。"
"注意为了能够使用Input#将文件中的数据正确读入变量,请使用Write#语句而不是Print#语句将数据写入文件。使用Write#确保每个单独的数据字段都被正确分隔。"
考虑到空格分隔,您需要以不同方式解析文件。这是一个例子:
Dim iLine As Integer,
Dim sFile As String
Dim sData As String
Dim sLine() As String
Dim sSplitLine() As String
Dim x as Double
Dim y as Double
'read the whole file into 1 string variable
sFile = "perforatedcircles.txt"
Open sFile For Input As #1
sData = Input(LOF(1), 1)
Close #1
sLine = Split(sData, vbCrLf)
For iLine = 0 To UBound(sLine)
sSplitLine = Split(sLine(UBound(sLine)), " ")
x = CDbl(sSplitLine(0))
y = CDbl(sSplitLine(1))
'Do Stuff with your numbers here
Next iLine