# Spezielle Zeile in Textdatei auslesen



## MotoxX (31. Mai 2004)

Hi,
Ich möchte gerne eine spezielle Zeile aus einer Textdatei auslesen. Dazu lasse ich vorher per zufallsgenerator eine Zahl ermitteln, zum Beispiel 4 und dann zum Beispiel nur die Zeile 4 einer Textdatei auslesen. Wie das mit dem Zufallsgenerator  weiß ich, aber wie geht das, das mein Programm nur die benötigte Zeile einliest und kann ich vorher irgendwie feststellen lassen, wieviel Zeilen die Textdatei enthällt?

Vielen Dank für die Hilfe
MotoxX


----------



## Cthulhu (1. Juni 2004)

Soviel ich weiss sind Textdateien nicht strukturiert, aber bitte korrigieren wenns nicht stimmt. Um eine bestimmte Zeile auslesen zu können musst du Record um Record einlesen bis du die gewünschte Zeile hast. 

Das gleich prinzip auch beim Zählen der Zeile, zuerst mal den ganzen Text durchrammeln.


----------



## Retlaw (1. Juni 2004)

Wenn du z.B. die fünfte Zeile willst liest du alles vom vierten bis zum fünften Zeilenumbruch. Zum Suchen kannst du die Konstante vbCrLf verwenden.


----------



## kermitfrosch (2. Juni 2004)

Hallo,
probier mal folgendes:

Public Function ReadLine(Quelle As String, Zeile As Long) As String
   'ließt aus einer Datei eine Zeile aus

   Dim nA
   Dim nZahl As Long

   nA = Split(ReadFile(Quelle), vbCrLf)
   nZahl = UBound(nA)

   'Wenn Zeile größer Zeilenzahl dann .....
   If Linie - 1 > nZahl Then
       ReadLine = "ERROR"
       Exit Function
   End If

   ReadLine = nA(Zeile - 1)
End Function

'Textdatei auslesen
Public Function ReadFile(FileName As String) As String
   Dim Buffer As String
   Dim nFNr As Long

   nFNr = FreeFile

   Open FileName For Binary Shared As #nFNr
      Buffer = String$(LOF(1), 0)
      Get #1, , Buffer
   Close #1
   ReadFile = Buffer
End Function


----------



## MotoxX (14. Dezember 2004)

Danke für die Hinweise.
Ich habe heute rausgefunden, dass es viel einfacher geht. Man verwendet einefach eine Zählschleife. Wenn ich zum Beispiel die fünfte Zeile ausgelesen haben möchte, dann geht das wie folgt:

For n = 1 to 5
  input #DatNr, Variable
Next

Danach kann ich die Variable abfragen und siehe da, es ist der Eintrag aus der fünften Zeile.

Schönen Tag noch
MotoxX


----------

