Konsole Prefix erkennen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von big-d.

    Konsole Prefix erkennen

    Hallo,

    ich bin momentan soweit, dass ich bei meiner Konsolenanwendung in der Main() Sub mit einer While True schleife auf einen Input warte, aber auch gleichzeitig in einem anderen Thread Sub T() bei empfang etwas in die Konsole schreibe. Ich möchte jedoch, bei meinem Input immer einen kleinen Prefix einfach aus Design Gründen haben:
    -----------------------------------------------------------------------------------------------
    Consoleapplication

    >
    ----------------------------------------------------------------------------------------------
    Das ist einfach der Prefix " >" den ich normalerweise einfach mit Console.Write(" >") davor setzen würde, jedoch kann es sein, dass der User gerade etwas schreibt oder auch nicht und Sub T() etwas empfängt, und dass dann hinter den Prefix klatscht, wie kann ich Sub T() den Output einfach sozusagen eine Line drüber ausgeben lassen? :)
    Ich verstehe deine Frage nicht ganz. Du hast also zwei Prozeduren die eine wartet auf eine Nutzer Eingabe. Du möchtest jetzt bei der Ausgabe dieses "<" davorklatschen und bei der Eingabe nicht, richtig ? Dann musst du doch nur vor dem Ausgabestring das Zeichen voranstellen oder versteh ich etwas falsch ?
    Nein haha :)
    Also ich möchte, dass immer in der zeile in der der User etwas momentan Eingibt ein > ist, damit man es sieht, wenn jedoch währenddessen eine Ausgabe kommt, soll diese 1. nicht das > davor haben und 2. nicht den Text, den der User gerade am schreiben ist Teilen sondern einfach 1 Zeilge drüber ausgegeben werden
    Meine Ausgabe sieht nun wiefolgt aus:

    VB.NET-Quellcode

    1. Console.Write("• " & "|") Console.ForegroundColor = ConsoleColor.Cyan Console.Write("|") Console.ForegroundColor = ConsoleColor.White Console.WriteLine(T)


    Wegen den Farben, muss ich am Anfang Write Benutzen, deshalb denke ich setzt sie mitten in der Eingabe ein aber ich möchte, dass sie ehh über der derzeitigen eingabe ausgegeben wird, da der User ja seinen Text, bei welchem durch den Output ja unterbrochen wurde nochmals eingeben muss

    Edit:



    Wie kann ich denn prüfen ob der Nutzer etwas eingegeben hat, ohne dass er Enter gedrückt hat?
    Da ich es mit der formatierung hier grad nicht hinkriege hier auf Pastebin:

    Sub T()

    VB.NET-Quellcode

    1. Console.ForegroundColor = ConsoleColor.Dark
    2. CyanConsole.Write("• " & "|")
    3. Console.ForegroundColor = ConsoleColor.Cyan
    4. Console.Write("|")
    5. Console.ForegroundColor = ConsoleColor.White
    6. Console.WriteLine(stream)


    Sub Main()

    VB.NET-Quellcode

    1. While True
    2. Dim tmp As String = Console.ReadLine()
    3. If Not tmp = "" Then
    4. w.WriteLine(("[" & My.Computer.Clock.LocalTime.Hour & ":" & My.Computer.Clock.LocalTime.Minute & "]" & BasicInfo.username & " -> " & tmp)
    5. w.Flush()
    6. Else
    7. Console.ForegroundColor = ConsoleColor.Red
    8. Console.WriteLine("Please enter a message...")
    9. Console.ForegroundColor = ConsoleColor.White
    10. End If
    11. End While


    Soo also
    Wir nehemen an der User tippt einen 100 Zeichen langen Text ein der von Sub Main angenommen wird, Sub T() jedoch unterbricht den User nach 50 Worten und schreibt den Text einfach in die Console, demnach muss der User den Text erneut schreiben. Ich will aber, dass falls dies der Fall sein sollte, dass Sub T() ihn während des Inputs unterbricht. Sub T() den Output einfach Über die momentane Eingabe schreibt, also die eingabe sozusagen eine Zeile nach unten verschiebt und in die freie Zeile den Text schreibt.

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

    Hey,

    denkst Du nicht, dass Du mit einer WindowsForms-Anwendung besser beraten bist?

    Nimm zum Beispiel eine TextBox, wo der User seine Eingaben macht und eine andere TextBox, wo die Ausgaben erfolgen. Das Rumgemurkste mit der Console in dieser Art ist es doch nicht wert.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ausserdem wird deine Prozedur nichtmal ausgerufen , mir fehlen 3 nicht deklarierte Variablen also versteh ich nicht wo das Problem ist der Nutzer gibt hier "String" ein und es wird [Zeit]Nutzer->String ausgegeben
    und @ErfinderDesRades
    Das hat mich auch in den Wahnsinn getrieben Danke für den Link :thumbup: