Suche eine Möglichkeit mehrzeilige Textdatei nur bestimmte Werte auszuwählen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Suche eine Möglichkeit mehrzeilige Textdatei nur bestimmte Werte auszuwählen

    Hallo VB-Gemeinde,

    folgendes Problem ich habe einen Mehrzeiligen Text bei dem ich nur Werte auslesen möchte die an einer bestimmten Stelle einen Wert zwischen zwei Zahlen hat.

    Start und Ende Der Zahlen würde ich so machen (es handelt sich um zwei Datas:

    VB.NET-Quellcode

    1. Dim Date1 As Integer = DateTimePicker1.Value.Day
    2. Dim Date2 As Integer = DateTimePicker2.Value.Day


    Die Textdatei hat am Anfang immer folgende Zeile (letzen beiden Zahlen Werte sind der Tag des Datums)
    600012809
    600012810
    600012811
    600012812
    600012809
    600012809

    Mit dem DateTimePicker würde ich den Tag abgreifen und dann danach Filtern wollen, aber wie?
    Ich dachte mir evtl über eine Select Anweisung oder ein InStr() oder sowas.

    Kann mir jemand helfen?

    Mit IndexOf() und der Länge des Suchstrings kommst Du an die Position des Zielstrings.
    Mit SubString() holst Du Dir einen bestimmten Teil raus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich meine den Wert vom Tag z.B. 15.02. da möchte ich nur die 15 haben und das anhand vom Zeitraum

    vom 01. bis zum 15. diese Info möchte ich haben.

    Wähle mir nur die Zeilen aus, die in diesem Zeitraum liegen.

    Könnte es auch so gehen?

    VB.NET-Quellcode

    1. Do While xxx.Substring(17, 1) < Date2 And xxx.Substring(17, 1) > Date1

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „cettheonly“ ()

    Hallo Zusammen, ich habe mein Problem wie folgt gelöst:

    VB.NET-Quellcode

    1. Dim Date1 As Long = DateTimePicker1.Value.Day
    2. Dim Date2 As Long = DateTimePicker2.Value.Day
    3. Do Until sr.Peek() = -1
    4. xxx = sr.ReadLine()
    5. Dim Datumsfilter As Long = xxx.Substring(17, +2)
    6. Select Case Datumsfilter
    7. Case Is < Date1
    8. On Error Resume Next
    9. Case Date1 To Date2
    10. If xxx.Contains() Then
    11. Result = xxx.Substring(0, 95)
    12. REM MessageBox.Show(Result)
    13. fw.WriteLine(Result)
    14. Else : Result = xxx
    15. REM MessageBox.Show(Result)
    16. fw.WriteLine(Result)
    17. End If
    18. Case Is > Date2
    19. On Error Resume Next
    20. End Select


    funktioniert ohne Probleme ich muss es noch genau testen ob es alles so geht und dauerhaft geht, aber bisher gehts!
    :thumbsup:

    VB.NET-Quellcode

    1. Do Until sr.Peek() = -1

    BTW: Wo schreibt ihr alle das eigentlich immer ab? Ist EndOfStream uncool oder was?
    Mal abgesehen davon dürfte

    VB.NET-Quellcode

    1. For Each s In IO.File.ReadLines("path")
    2. ' foo
    3. Next

    doch wohl auch seinen Zweck erfüllen?

    VB.NET-Quellcode

    1. On Error Resume Next

    Lets play C&P ...
    Du bist noch sehr in der VB6-Philosophie gefangen. Versuche, Dich davon zu lösen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!