2017-03-15 3 views
0

Der folgende Code liest Werte (in einer Schleife) aus einer Textdatei ein, die zwei Zahlen pro Zeile in X und Y enthält. Die erste Iteration der Schleife liefert korrekte Werte für X und Y (70 , 210). Ab der nächsten Iteration sind die X- und Y-Werte nicht mehr das, was in der Datei enthalten ist (210, 210 für die zweite Iteration anstelle von 0, 210). Ich mache einen Fehler, aber ich kann es nicht finden!Lesen von formatierten Daten aus einer Textdatei

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 

Beispielinhalt von "perforatedcircles.txt":

70.000 210.000 
0.000 210.000 
-70.000 -210.000 

Antwort

0

Wie wurde die Eingabedatei erstellt? Es scheint in einem anderen Format zu sein, als die Input # -Direktive erwartet.

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

„Daten lesen mit Input # in der Regel in einer Datei mit Write # geschrieben wird. Mit dieser Anweisung wird nur mit geöffneten Dateien in Ein- oder Binär-Modus.“

"Hinweis Um Daten aus einer Datei mit Input # in Variablen lesen zu können, verwenden Sie die Write # -Anweisung anstelle der Print # -Anweisung, um die Daten in die Dateien zu schreiben. Mit Write # wird sichergestellt, dass jedes separate Datenfeld ist richtig abgegrenzt. "

Angesichts der Raumbegrenzung müssen Sie die Datei anders analysieren. Hier ein Beispiel:

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

Die Datei wurde in Matlab mit Leerzeichen als Trennzeichen geschrieben. – umayfindurself

Verwandte Themen