Zeilen auslesen in label anzeigen

  • VB.NET

Es gibt 55 Antworten in diesem Thema. Der letzte Beitrag () ist von Mokki.

    Die Datei wird immer Umgeschrieben und erweitert. was heute drinsteht kann morgen gelöscht sein und umgekehrt.
    Kann dir nicht folgen, sorry.

    Ich geb ihm doch schon genau vor welche zahl ich will. txtRS.text

    wie verhindere ich dass er nach anderen sucht als exact die zahl die ich ihm vorgebe?

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

    VB.NET-Quellcode

    1. Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click
    2. Try
    3. Label4.Text = ""
    4. For Each line As String In IO.File.ReadAllLines("C:\blablabla.dat")
    5. Line = Line.TrimStart
    6. 'mit RegEx:
    7. 'If txtRSPR.Text = Regex.Matches(line, "[0-9]{0,}")(0).ToString Then
    8. If txtRSPR.Text = String.Join("", line.TakeWhile(Function(n) "0123456789".Contains(n))) Then
    9. Label4.Text = Line.Replace(txtRSPR.Text, "")
    10. Exit For
    11. End If
    12. Next
    13. Catch ex As Exception
    14. Label4.Text = "Fehler!"
    15. End Try
    16. End Sub

    Verstehst du den Unterschied der IF-Zweige von dir und von mir?
    anscheinend nicht, der bringt auch nur Fehler.

    aber ich versuchs mal

    du setzt das label auf leer
    liest die datei aus
    entfernst die leerzeichen
    du überprüfst ob die datei die angegebenen zeichen enthällt
    dann die zeile anzeígen im label und die zahl aus der textbox replacen
    sonst fehler

    liege ich richtig?

    aber er sagt mir ich könne keinen char in einen string konvertieren.
    und nun?

    Gottric schrieb:

    If Line.StartsWith(txtRSPR.Text) = CBool(String.Join("", CType(Line.TakeWhile(Function(n) "0123456789".Contains(n)), String()))) Then
    Jetzt ist mir deine Fehlermeldung klar - ich habe immer meinen vorgeschlagenen Code begutachtet...Schaue einmal oben Zeile #8 im Post #22
    Wie kommst du auf so einen Gurkencode?
    Ich versteh das Problem immernoch nicht ganz sonst hät ich dir schon mit Regex geholfen....
    Also:
    Ist es egal wo die Zahlen stehen(sollen einfach alle Zahlen entfernt werden)?
    Kommt immer nach den Zahlen ein Leerzeichen und davor ein Return im Text?
    Brauchst du alles hinter den Zahlen bis zum nächsten Return im Text?


    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    @VB1963 ich hab ja geschrieben dass ich seit gestern options strickt in benutze und der führt deinen Code überhaupt nicht aus ohne diese Umwandlung.

    VB.NET-Quellcode

    1. Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click
    2. 'Try
    3. Label4.Text = ""
    4. For Each line As String In IO.File.ReadAllLines("C:\Users...")
    5. line = line.TrimStart
    6. 'mit RegEx:
    7. 'If txtRSPR.Text = Regex.Matches(line, "[0-9]{0,}")(0).ToString Then
    8. If txtRSPR.Text = String.Join("", line.TakeWhile(Function(n) "0123456789".Contains(n))) Then
    9. Label4.Text = line.Replace(txtRSPR.Text, "")
    10. Exit For
    11. End If
    12. Next
    13. 'Catch ex As Exception
    14. ' Label4.Text = "Fehler!"
    15. 'End Try
    16. End Sub

    mit ausgeschaltetem otion strict on zeigt er mir in line trotzdem nur die erste zeile der datei an, egal welche zahl ich eingebe.

    @Mokki
    in der Datei stehen Zahlen von 1-9999 hinter den Zahlen steht nach Leerzeichen ein Text. In dem Text können auch Zahlen enthalten sein. Ich will wenn ich zum Beispiel 517 eingebe das er mit den Text hinter der Zahl 517 anzeigt in nen Label per Klick Event. Nach der Zeile kommt ein Return

    Der Text lautet zum Beispiel :
    Auto Wagen 7200 grün Banane
    er sucht aber manchmal die einfach die 5179
    text .lautet dann
    auto blau Apfel Meerschweinchen
    Zeigt aber an
    9auto blau Apfel Meerschweinchen


    hab den Fehler.
    So funktioniert es ohne Probleme genau wie ich möchte.

    VB.NET-Quellcode

    1. Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click
    2. Try
    3. Select Case True
    4. Case txtRSPR.TextLength = 0
    5. Label4.Text = "RS:"
    6. Case CInt(txtRSPR.Text) > 0
    7. For Each Line As String In IO.File.ReadAllLines("C:\Users\...")
    8. Line = Line.TrimStart
    9. If txtRSPR.Text = Regex.Matches(Line, "[0-9]{0,}")(0).ToString Then
    10. Label4.Text = Line.Replace(txtRSPR.Text, "RS:")
    11. End If
    12. Next
    13. End Select
    14. Catch ex As Exception
    15. Label4.Text = "RS:"
    16. End Try
    17. End Sub


    Imports System.Text.RegularExpressions ist das Schlagwort. :)

    danke sehr.


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gottric“ ()

    @Gottric Was steht in txtRSPR für ein String?
    ReadAllLines ==> ReadLines (das schont die Ressourcen)
    Gib dem gelesenen Text ein vernünftiges Encoding:
    ==>

    VB.NET-Quellcode

    1. For Each line As String In IO.File.ReadLines("C:\Temp\Test.txt", System.Text.Encoding.Default)
    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!

    Gottric schrieb:

    kein menber von File
    ???
    Hier mein vollständiger Code, bei "9" passiert was:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. 'Try
    4. Label4.Text = ""
    5. For Each line As String In IO.File.ReadLines("C:\Temp\Test.txt", System.Text.Encoding.Default)
    6. line = line.TrimStart
    7. 'mit RegEx:
    8. 'If txtRSPR.Text = Regex.Matches(line, "[0-9]{0,}")(0).ToString Then
    9. Debug.WriteLine(String.Join("", line.TakeWhile(Function(n) "0123456789".Contains(n))))
    10. If txtRSPR.Text = String.Join("", line.TakeWhile(Function(n) "0123456789".Contains(n))) Then
    11. Label4.Text = line.Replace(txtRSPR.Text, "")
    12. Exit For
    13. End If
    14. Next
    15. 'Catch ex As Exception
    16. ' Label4.Text = "Fehler!"
    17. 'End Try
    18. End Sub
    19. End Class
    Bedenke, dass der Inhalt des Labels mit jeder folgenden Zeile überschrieben wird, und wenn am Ende "" reingeschrieben wird, ist das Label leer, auch wenn vorher was drin stand.
    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!

    VB.NET-Quellcode

    1. Private Sub btnPRGO_Click(sender As Object, e As EventArgs) Handles btnPRGO.Click
    2. lblRS.Text = "RS:"
    3. lblVS.Text = "VS:"
    4. Try
    5. Select Case True
    6. Case txtVSPR.TextLength = 0
    7. lblVS.Text = "VS:"
    8. Case CInt(txtVSPR.Text) > 0
    9. For Each Line As String In IO.File.ReadAllLines(Pfadprg24 + "prg__dir.dat", System.Text.Encoding.Default)
    10. Line = Line.TrimStart
    11. If txtVSPR.Text = Regex.Matches(Line, "[0-9]{0,}")(0).ToString Then
    12. lblVS.Text = Line.Replace(txtVSPR.Text, "VS:")
    13. End If
    14. Next
    15. End Select
    16. Catch ex As Exception
    17. lblVS.Text = "VS:"
    18. End Try
    19. End Sub


    das ist mein vollstänidger Code der ohne Probleme genau das macht was er soll.
    seht ihr noch nen Fehler den ich Übersehe?
    Der Code ist in nen Suchlauf eingebettet den ich aus dem Post entfernt habe.

    Gottric schrieb:

    VB.NET-Quellcode

    1. Line = Line.TrimStart
    Funktioniert in VB.NET, in C# ist dies nicht möglich. :/

    =====

    VB.NET-Quellcode

    1. If txtVSPR.Text = Regex.Matches(Line, "[0-9]{0,}")(0).ToString Then
    Ist gesichert, dass mindestens ein Match zurückkommt?
    Ansonsten gibt es eine IndexOutOfRangeException.
    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 schreibe ja auch in VB.Net

    und nein, ist nicht gesichert. wenn er keins findet hab ich es ja abgegriffen und gesagt was er dann schreiben soll.
    dann gibt es die zeile in der Datei nicht, das kann sich wie ich schon geschrieben habe jederzeit ändern.
    und wenn dann erkennt er es ja.

    mir ist nur aufgefallen da ich ja den text aus der textbox ja replace mit "VS:", bei einer speziellen Zeile dann schreibt.

    ich gebe 2 in die TExtbox ein und das geschiet:

    WVS:4VS: Apfel Banane GRÜN

    anstatt

    W 242 Apfel Banane GRÜN

    aber ich muss ja irgendwie die Nummer aus der Textbox entfernen aus der Zeile, ich will nur den Text haben im Label.

    Gottric schrieb:

    die Nummer aus der Textbox entfernen
    RegEx ist nicht so mein Ding, ich würde den String am Leerzeichen splitten und die Parts auf IsNumeric testen.
    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!
    Du benutzt regex auch falsch fürs replacen benutzt man regex.replace. für mich sieht der Cide oben auch so aus das er alle Zahlen replacet also hier mal nen bsp:
    1111 lalala 1111
    Wird dann
    lalala
    Oder
    lalala
    oder
    lalala 1111
    oder
    lalala 1111
    oder
    ZahlZahlZahlZahl lalala ZahlZahlZahl
    oder oder oder
    Also was magst du jetzt. Einmal sagst du du magst nur die ersten Ersetzen dann ersetzt du alle....


    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Ich will ja nur die ersten ersetzen. Hab da wohl was falsch gemacht. Hab nie mit regex gearbeitet. Nicht gewusst dass es Replace regex gibt.

    Und ne er macht es ja nicht immer.

    wenn ich 2 in die Textboxe eingebe und die Zeile lautet
    u 555 Banane 1200
    brungter keine Fehler sondern schreibt 555 Banane 1200

    Ich bin noch am tüfteln, sitzt jett wieer am pc