Programmierung allgemein
Von: Tukkin (abgemeldet), 20.4.2011 21:48 Uhr
... einer Testdatei auslesen? Ich will aus einer Datei eine zufällige Zeile auslesen.



  1. Antwort von EDV-Dompteur.de 0
    Re: Wie kann ich mit VBS eine zufällige Zeile ...

    ... 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.
    • Antwort von Mitsch 0
      Re: Wie kann ich mit VBS eine zufällige Zeile ...
      Hallo Tukkin,
      ich würde folgendermaßen vorgehen:
      1. Die Datei bis zum Ende auslesen und dabei die Anzahl der Zeilen zählen.
      2. Das Ergebnis in eine Variable speichern.
      3. Eine Zufallszahl auf Grundlage dieser Anzahl ermitteln
      4. 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.
      • Antwort von R159 0
        Re: Wie kann ich mit VBS eine zufällige Zeile ...
        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?