Text ohne Enter hinzufuegen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Visual_Prog.

    Text ohne Enter hinzufuegen

    Hallo ich habe hier einen code mit dem Ich einem Array was hinzufuegen kann in der Konsole.
    Nun will ich auch Texte in die Konsole kopieren (ueber der Menubar und dann Einfuegen).
    Leider haben die Texte auch zeilen ohne Inhalt, diese versteht die Konsole dann als Enter-Drücken.
    Kann man das so arrangieren, dass man den Text hinzufuegen kann?

    VB.NET-Quellcode

    1. dim englisch(99) as String
    2. For i = 0 To 100
    3. Console.WriteLine("Bitte Geben sie den englischen Begriff ein. n = nicht weitermachen")
    4. If Console.ReadKey().Key = ConsoleKey.Escape Then
    5. Exit For
    6. Else
    7. englisch(i) = Console.ReadLine
    8. End If
    9. Next
    Kann jeder beliebige Text sein. HIer ein Auszug aus einem WIkipedia-Artikel:
    "Der Besitzer des Teams ist Robert Kraft, dem auch das Gillette Stadium, das aktuelle Stadion der Mannschaft, gehört.[2]

    Die Patriots spielten ursprünglich in der American Football League (AFL) und wechselten nach deren Auflösung im Jahr 1970 in die NFL. Vor ihrem ersten Auftritt in einem Super Bowl erreichten sie erst viermal die Play-offs."
    Also eine Fortsetzung Deines anderen Threads.
    Wenn man davon absieht, dass Du wieder For i = 0 To 100 statt For i = 0 To 99 schreibst und damit nen Fehler am Ende Deiner 100 Abfragen provozierst und Du den ReadKey-Fehler noch drin hast, der dazu führt, dass all Deine Eingaben zu falschen Daten führen, da bei allen Eingaben das erste Zeichen fehlen wird, wie RFG bereits schrieb, verarbeite den Hinweis von ~blaze~:

    VB.NET-Quellcode

    1. Sub Main()
    2. Dim englisch(99) As String, ConsoleLine As String = "", IncomingConsoleKey As ConsoleKeyInfo = Nothing
    3. Dim i As Integer = 0
    4. Do Until Not String.IsNullOrEmpty(englisch(99))
    5. Console.WriteLine("Bitte geben Sie den englischen Begriff ein. Escape = nicht weitermachen")
    6. IncomingConsoleKey = Console.ReadKey
    7. If IncomingConsoleKey.Key = ConsoleKey.Escape Then : Exit Do
    8. Else
    9. If IncomingConsoleKey.KeyChar = vbCr Then : ConsoleLine = Console.ReadLine
    10. Else : ConsoleLine = IncomingConsoleKey.KeyChar & Console.ReadLine
    11. End If
    12. End If
    13. englisch(i) = ConsoleLine
    14. i += 1
    15. Loop
    16. End Sub


    Edit: Code den Anforderungen lauffähig gemacht; For-Schleife durch Do-Loop-Schleife ersetzt, um solange weiterzumachen, bis ESC gedrückt wurde oder alle Einträge von "englisch" gefüllt sind

    Edit2: heieiei, hab die "Abspeicherung" im Array vergessen.
    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.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“ ()

    @ Kameo: dann erscheinen jeweils 100 Zeilen mit der Eingabeaufforderung und nur ein einzelner buchstabe steht davor

    @Vaporized: Danke das sieht doch schon sehr vernuenftig aus, ich haette das mit meinen Kentnissen wohl nicht hingekriegt. Auch wenn der Code schon sehr gut ist musste ich leider feststellen, dass nach dem ersten Absatz die Schleife mit der Abfrage wieder losgeht. : /
    Hab die ConsoleLine-zu-englisch vergessen und jetzt noch in den Code eingefügt.
    Nun erhalte ich mit Deinem Beispieltext:
    1. Kann jeder beliebige Text sein. HIer ein Auszug aus einem WIkipedia-Artikel:
    2. "Der Besitzer des Teams ist Robert Kraft, dem auch das Gillette Stadium, das aktuelle Stadion der Mannschaft, gehört.[2]
    3. Die Patriots spielten ursprünglich in der American Football League (AFL) und wechselten nach deren Auflösung im Jahr 1970 in die NFL. Vor ihrem ersten Auftritt in einem Super Bowl erreichten sie erst viermal die Play-offs."
    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.
    OKay vielen Dank.
    Ich hätte noch eine Frage wenn du nichts dagegen hat und zwar:

    wenn man dann alles, was eingefuegt wurde, dann später in einer zeile wiedergeben moechte?

    Für das obige Beispiel wäre das dann:

    1. "Der Besitzer des Teams ist Robert Kraft, dem auch das Gillette Stadium, das aktuelle Stadion der Mannschaft, gehört.[2]

    Die Patriots spielten ursprünglich in der American Football League (AFL) und wechselten nach deren Auflösung im Jahr 1970 in die NFL. Vor ihrem ersten Auftritt in einem Super Bowl erreichten sie erst viermal die Play-offs."

    --> Das muss ich Zur Zeit so formatieren, damit das dann auch in einer Zeile bleibt:
    "Der Besitzer des Teams ist Robert Kraft, dem auch das Gillette Stadium, das aktuelle Stadion der Mannschaft, gehört.[2] Die Patriots spielten ursprünglich in der American Football League (AFL) und wechselten nach deren Auflösung im Jahr 1970 in die NFL. Vor ihrem ersten Auftritt in einem Super Bowl erreichten sie erst viermal die Play-offs."

    Anderes Beispiel
    ".. in einem umstrittenen Prozess erneut schuldig gesprochen worden.
    Die Menschenrechtsorganisation Amnesty International hat der syrischen Regierung vorgeworfen, zwischen 2011 und 2015 in..."
    --> wird in 2 Zeilen gelesen

    aber wenn ich das so formatiere in einer Zeile: (ist halt etwas unuebersichtlicher)
    ".. in einem umstrittenen Prozess erneut schuldig gesprochen worden.Die Menschenrechtsorganisation Amnesty International hat der syrischen Regierung vorgeworfen, zwischen 2011 und 2015 in.."


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

    Visual_Prog schrieb:

    Leider haben die Texte auch zeilen ohne Inhalt, diese versteht die Konsole dann als Enter-Drücken.
    Jetzt will ich ueber Rechtsklick oben am Konsolenfenster einen Text einfuegen.
    Der hat jedoch eine Leerzeile. Die Console soll die Leerzeile nicht als Enter interpretieren...Was koennte man da machen?
    Der Code in Post #5 macht dieses Verhalten leider nicht!
    Da habe ich auch einmal etwas fabriziert, wo leere Zeilen missachtet werden und nur Zeilen mit Inhalt in eine List (Of String) aufgenommen werden...

    VB.NET-Quellcode

    1. Private englisch As New List(Of String)
    2. Sub Main()
    3. Console.Clear()
    4. Console.WriteLine("Escape = abbrechen")
    5. Console.WriteLine()
    6. '
    7. Do
    8. Dim ckInfo = Console.ReadKey()
    9. If ckInfo.Key = ConsoleKey.Escape Then Exit Do
    10. Dim line = ckInfo.KeyChar & Console.ReadLine()
    11. If Not String.IsNullOrWhiteSpace(line) Then englisch.Add(line)
    12. Loop
    13. '
    14. Console.ReadKey()
    15. End Sub

    Ich hätte noch ne Frage,
    wenn ich das jetzt so uebernehmen wollte wie in Post 5, allerdings mit folgende Bedingung:

    wenn jetzt ein text mit Stichpunkt anfaengt, soll die Konsole alles von diesem TExt ubernehmen, bis sie auf den naechsten Stichpunkt trifft, z.b:

    "- das hier ist der erste Text, der von englisch ubernnommen wird
    ob das satzgefuege sinnvoll ist ist voellig egal

    auch wenn die lezte zeile gar keinen eintrag hat wird das hier alles uebernommen, bis der naechste Stichpunkt auftrifft."

    "- hier ist dann der naechste Stichpunkt und der naechste Text wird dann in englisch uebernommen.


    auch hier macht dir formatierung keinen sinn aber der text wird so uebernommen."