Kontrolle ob CR LF im String

  • VB.NET

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Kirohn.

    Kontrolle ob CR LF im String

    Hallo zusammen

    Ich habe ein Problem

    Ich lese mit einem Handheldscanner einen Barcode ein und bekomme einen Wert. Zum Beispiel: 123456789[CR][LF]
    Weil das CR LF in Visualstudio nicht in einem String sichtbar ist, weiss ich nicht, wie man diesen String überprüft, ob der String CR LF beinhaltet.

    Ich bitte um Hilfe.

    Gruss

    Kirohn
    Ein CR LF ist mehr oder weniger "sichtbar", es handelt sich um einen ZeilenUmbruch. CR = CarriageReturn, LF = LineFeed.

    C#-Quellcode

    1. if(yourString.Contains(Environment.NewLine))
    2. {
    3. MessageBox.Show("CR LF");
    4. }

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

    Ich vermute mal, dass es hier um eine normale Windows Anwendnung geht, wo die Lösung von @Takafusa 100% valide ist.

    Ich möchte jedoch darauf hindeuten, dass Environment.NewLine nur unter Windows CR UND LF ist. Unter Linux und Mac bringt Environment.NewLine entweder CR ODER LF.

    Wenn man also sichergehen möchte, dass sich absolut nichts mehr hinten dran befindet, sollte man die beiden explizit replacen.
    @Takafusa
    1. Du hast mir einen C# Code gegeben, obwohl rechts neben dem Title VB.NET steht.
    2. Dieser Code in VB.NET funktioniert nicht (Hab es selbst konvertiert).

    Aber trotzdem Danke

    @EaranMaleasi
    Nein, ich möchte es nicht ersetzen. Ich möchte nur kontrollieren, ob der String einen beinhaltet. Wenn ja, soll man automatisch zum nächsten Textbox springen.

    Ich verwende Windows.

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

    Kirohn schrieb:

    Du hast mir einen C# Code gegeben
    Kopier den Code, werf ihn hier rein:
    converter.telerik.com/

    Und bekomme das hier heraus:

    VB.NET-Quellcode

    1. If yourString.Contains(Environment.NewLine) Then
    2. MessageBox.Show("CR LF")
    3. End If
    Zudem sind sich C# und VB.NET nicht so ungleich. Immerhin verwenden die beiden dasselbe Framework.

    Dann aber die nächste Frage, was genau

    Kirohn schrieb:

    funktioniert nicht

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Netter Versuch, aber wir sehen als Moderatoren, dass Du den Zusatz

    Kirohn schrieb:

    Hab es selbst konvertiert
    im Nachhinein eingefügt hast. Stellt sich die allermüdliche Frage, was daran nicht funktioniert. Fehlermeldung? Falschverhalten? Computerexplosion?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Kirohn Ich denke mal, wenn der String von einem Barcodescanner kommt, ist Dir grundsätzlich egal, ob das [CR][LF] da ist oder nicht, Du willst nur einen sicheren Zustand haben.
    Machst Du

    VB.NET-Quellcode

    1. yourString = yourString.TrimEnd(New Char() { Convert.ToChar(10), Convert.ToChar(13) })
    danach sind die Ende-Zeichen weg, egal, ob sie vorher da waren oder nicht.
    ====
    Wenn Du den Barcodescanner mit .ReadLine im SerialPort ausliest und das SerialPort mit .NewLine = Environment.NewLine initialisiert ist, sind die Ende-Zeichen nicht da.
    Liest Du den Barcodescanner mit .ReadAvailable im SerialPort aus, sind die Ende-Zeichen da.
    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!
    @EaranMaleasi
    Ja, ich bin mir sicher

    @Takafusa und @RodFromGermany
    Ich nehme ihn von dem Barcodescanner. Aber es ist nicht so wie ihr denkt. Der Barcodescanner ist als USB-KBD(Keyboard) konfiguriert. Also wenn ich Notepad++ geöffnet, im Vordergrund habe und einen Barcode einscanne, schreibt das von selbst den Wert dort rein. Ich muss keine Kommunikation zwischen dem Programm und dem Scanner öffnen. Auch wenn das Nachteile bringen kann, ich verwende den Scanner so und kann diesen nicht anders verwenden (Vorschrift).

    Der andere Weg, der mir RodFromGermany gegeben hat würde nützlich sein, wenn ich sie verwenden dürfte. Ich darf sie nur verwenden, wenn es keine Möglichkeit gibt, dass ich dieses mit einer Kontrolle lösen kann.(Vorschrift)
    Bleibt die Frage: Wie kommt der String in deine Application?

    Deiner Beschreibung nach, vermute ich eine TextBox hat den Focus and der Scanner simuliert diesen Keyboardinput "123456789[ENTER]", wenn deine textBox nicht auf MultiLine gestellt ist, verpufft die [ENTER] Eingabe irgendwo und kein Zeilenumbruch ist im Text.
    @Takafusa
    Wenn meine Probleme immer mit solch kleinen Lösungen zu lösen sind, springe ich das nächste mal von einem Hochhaus.(nicht ernst nehmen)
    Danke für den Tipp wegen dem Multi Line. Hat mein Problem gelöst.
    Bei einer SingleLine-TextBox dürfte das abschließende Enter aber auch durch den KeyDown-EventHandler abfangbar sein (If e.KeyCode = Keys.Enter Then …) So mach ich es bei unseren Scannern.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Ich werde das ausprobieren und mich wieder melden. Wenn das wirklich mit SingleLine funktioniert, ist mein Problem, dass jetzt kam gelöst. Es ist wegen dem entfernen des CR LF, sodass es nicht eine neue Zeile in der Textbox macht. Leider hat der Vorschlag von RodFromGermany da nichts geholfen.

    Kirohn schrieb:

    Der Barcodescanner ist als USB-KBD(Keyboard) konfiguriert.
    Das ist die falsche Herangehensweise.
    Lass Dir vom Hersteller sagen, wie Du den Scanner als SerialPort betreiben kannst (hab ich schon mit mindestens 3 verschiedenen Scannern getan), da bekommst Du den gelesenen String genau dort hin, wo er hin soll und Du kannst das CRLF elementar abschneiden.
    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!

    Kirohn schrieb:

    weil es Vorschrift ist
    Welcher bescheuerte Vorgesetzte erlässt solch bescheuerte Vorschriften?
    Das ist eine ernsthafte Frage!
    Wenn Du ein Programm schreiben sollst und die Vorschrift lautet: Du darfst den Namespace IO nicht verwenden! ...
    Such Dir einen neuen Boss.
    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!