Verständnis-Probleme beim Textdatei in Variable einlesen

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich über gerade ein wenig verschiedene Arten von Einlesemöglichkeiten in VB.
Gerade möchte ich eine Textdatei direkt in Variablen einlesen!
Hier folgender Code:

Code:
Private Sub Command1_Click()
'On Error GoTo Fehler
Dim Text As String
Dim Min As Long
Dim Text2 As String
Dim U As Long
Dim file As Integer

file = FreeFile

Open "C:\Textdatei_in_Variable_einlesen.txt" For Input As #1
   
   Do While Not EOF(1)
   Input #1, Text, Min     
 
Text1.Text = Text & " " & Min
Loop
Msgbox Min
Close file

'Fehler: MsgBox "Irgendwas stimmt nicht"
End Sub

in meiner Datei steht:
Christkind
12
Nikolaus
13

Wenn ich die Daten so in die Datei schreibe funktioniert alles soweit

wenn aber drin steht:
Christkind 12
Nikolaus 13

gibt es die Ausgabe in der Textbox: Christkind 12 0 und dann kommt eine Fehlermeldung
Lauftzeitfehler 62 Einlesen nach dem Dateiende...
Warum ist das so?

wenn ich die beiden Werte gleich hinter einander schreibe:
Christkind 12 Nikolaus 13
kommt gleich die Fehlermeldung Einlesen nach dem Dateiende..
-> Warum muss mindestens ein Zeichen in der nächsten Zeile stehen damit das Auslesen wieder funktioniert?
-> dann wird aber das Zeichen in der nächsten Zeile auch noch mit ausgegeben

Und wann benötigt man dann eingentlich bei der Input-Anweisung eine Liste an Variablen

Input #1, Var1, Var2, Var3, Var4, Var5.........

Wenn das Auslesen von
Christkind 12 Nikolaus 13

schon mit einer Variablen
Input #1, Text
funktioniert. Meine andere Variable Min wird nämlich gar nicht befüllt
 

deepthroat

Erfahrenes Mitglied
Hi.

Das Problem ist, das Input # wenn es einen String einliest immer die komplette Zeile einliest, außer der Text in Anführungszeichen eingeschlossen ist.

D.h. wenn du alle Daten auf eine Zeile schreibst, wird zuerst die komplette Zeile in den String text eingelesen und dann erst wird versucht noch eine Zahl einzulesen - was natürlich schief geht.

Du solltest diese Dateien immer mit dem Befehl write# erstellen - oder wenn du es manuell machst darauf achten alle Strings in Anführungszeichen zu setzen.

Gruß
 

mage

Erfahrenes Mitglied
Die Funktion FreeFile liefert eine freie Dateinummer zurück.
Diese wird benötigt, um die richtige Datei anzusprechen.

Also solltest du in deinem Code statt #1 besser #file verwenden, sonst bekommst du spätestens ein Problem, wenn Du mehrere Dateien gleichzeitig öffnest.