… einer Testdatei auslesen? Ich will aus einer Datei eine zufällige Zeile auslesen.
… einer Testdatei auslesen? Ich will aus einer Datei eine
zufällige Zeile auslesen.
Hallo Tukkin,
von VBS habe ich keine Ahnung (weiß aber, was es ist), aber in VB.Net würde ich es so machen:
Lese die gesamte Datei ein, in einen riesigen String.
Mit dem Split-Befehl und Cr LF (hex 0D0A) als Separator, splittest Du die Datei in ein String-Array.
Jetzt belegt also jede Zeile einen Eintrag in diesem Array und kann über eine Nummer angesprochen werden.
Tja, und dann generierst Du halt eine Zufallszahl (Null bis 1), multiplizierst diese mit der Anzahl der Arrayelemente und kannst damit dann direkt einen zufälligen Arrayeintrag auslesen.
Geht übrigens selbst bei riesigen Dateien blitzschnell!
Blitzschnell heißt, dass Du keinerlei Verzögerung wahrnehmen kannst, zwischen auslösendem Mausklick und Ausgabe der Zeile. Millisekunde oder so.
Hallo Tukkin,
ich würde folgendermaßen vorgehen:
- Die Datei bis zum Ende auslesen und dabei die Anzahl der Zeilen zählen.
- Das Ergebnis in eine Variable speichern.
- Eine Zufallszahl auf Grundlage dieser Anzahl ermitteln
- Die Datei noch einmal lesen, aber nur so lange, bis der Datensatz, der der Zufallszahl entspricht erreicht ist.
Gruß
Mitsch
… einer Testdatei auslesen? Ich will aus einer Datei eine
zufällige Zeile auslesen.
Direkt geht das nicht (soweit mir bekannt)!
Du musst erstmals den Inhalt der Datei mit ReadAllLines in einem String Array auslesen und da kannst dann zufällig einen Eintrag davon auswählen.
So könnte es z.B. aussehen:
'Dateiname/Pfad
Dim DateiPfad As String = „C:\Temp\Textdatei.txt“
'Die Textdatei in einem String Array auslesen
Dim zeilen() As String = IO.File.ReadAllLines(DateiPfad)
'Zufallsgenerator
Dim Zufall As New Random
'Zufallszahl zwischen 0 und Zeilenanzahl
Dim zufallsZahl As Integer = Zufall.Next(0, zeilen.Count)
Je nachdem was du damit machen willst…z.B. in einer Textbox ausgeben:
TextBox1.Text = zeilen(zufallsZahl)
Nur ich frage mich wofür man sowas brauchen würde?