2017-03-15 136 views
0

以下代码从包含每行两个数字的文本文件读入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

如何被输入文件产生的?它看起来与Input#指令所期望的格式不同。

https://msdn.microsoft.com/en-us/library/aa243386(v=vs.60).aspx

“数据读取输入#通常写与写#的文件。使用此语句只在输入或二进制模式打开的文件。”

“注意为了能够使用输入#正确地将文件中的数据从文件读入变量,使用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 
+0

该文件是用Matlab编写的,用空格作为分隔符。 – umayfindurself