Knifflig, Konsolenanwendung und CursorTop

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von link_275.

    Knifflig, Konsolenanwendung und CursorTop

    Hi community

    Jetzt starte Ich hier seit langem mal wieder einen Thread im OnTopic-Bereich :)
    Folgendes, Ich habe mir mal dieses Console.CursorTop angesehen, das finde Ich sehr interessant.
    Disen Code habe Ich nun, er funktioniert ja auch, ABER eben nur teilweise, am besten Ihr set's euch selbst an:

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. On Error Resume Next
    4. Console.Clear()
    5. Dim n As Object
    6. Console.WriteLine("Name: <LEER>")
    7. Console.WriteLine("Vorname: <LEER>")
    8. Console.WriteLine("Alter: <LEER>")
    9. Console.WriteLine()
    10. Console.Write("Bitte eingeben: ")
    11. Dim I() As String = Console.ReadLine.Split(",")
    12. Console.CursorTop = 0
    13. Console.WriteLine("Name: " & Trim(I(0)))
    14. Console.CursorTop = 1
    15. Console.WriteLine("Vorname: " & Trim(I(1)))
    16. Console.CursorTop = 2
    17. Console.WriteLine("Alter: " & Trim(I(2)))
    18. Console.ReadLine()
    19. Main()
    20. End Sub
    21. End Module


    Das hab' Ich nur mal eben dahingeschrieben, um das deutlich zu machen, es geht mir hauptsächlich um dieses Console.CursorTop

    Soweit so gut, aber der wirklich für mich schwierige Teil ist folgender:
    Wenn Ich einen kürzeren Strings als "<LEER>" habe(das "Name: " und so weiter wird ja wieder obenhin geschrieben), sehe Ich alle übrigen Zeichen trotzdem noch. Das
    ist beispielsweise spätestens in der Sparte "Alter" zwangsläufig der Fall. Ich weiß nicht wie Ich es besser beschrieben könnte, am besten ihr pastet den Code mal und probiert das aus, dann wird schnell deutlich woran's hapert.

    Ich versuche nun schon seit gestern das Problem zu umgehen, Ich hoffe Ihr wisst Rat, denn langsam bin Ich, zugegeben, an einzig und allein dieser banalen Sache mit meinem Latein beinahe am Ende ^^


    link_275
    Hello World
    Nein kein Fieber ;) Das mit mehreren Spaces hab' Ich auch schon versucht, aber Ich dachte es gäbe womöglich eine bessere alternative, dass automatisch wenn etwas eingefügt wird der alte Text verschwindet oder so in etwa ..


    link_275
    Hello World
    Der soll doch gerade nicht verschwinden, dachte ich ;)

    Für Deine Mini-Anwendung gibt es noch jede Menge Verbesserungsmöglichkeiten:
    - Console.SetCursorPosition
    - mit ReadKey lesen, statt ReadLine
    - SetBufferSize für bestimmte Console Bereiche

    Muss aber zugeben ich hab das lange nicht mehr gemacht, seitdem ich MFC entdeckt hatte ...
    Bitte keine Verbesserungen zum Programm selbst, das ist einfach nur so dahingeklatscht ^^

    Und ja, der Text soll ja verschwinden, was er aber nicht tut, er wird einfach nur soweit ersetzt, wie die Länge der neuen Zeichenkettenlänge ist.
    Was Ich aber in etwa suche, wäre ein Console.Clear für einlene Zeilen. Falls es sowas gibt ^^



    link_275
    Hello World
    Falls es noch mal jemand brauchen kann, Ich habe es nun so gelöst:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim placeholder As String = "<LEER>"
    4. Dim p_length As Integer = placeholder.Length
    5. On Error Resume Next
    6. Console.Clear()
    7. Dim n As Object
    8. Console.WriteLine("Name : " & placeholder)
    9. Console.WriteLine("Vorname: " & placeholder)
    10. Console.WriteLine("Alter : " & placeholder)
    11. Console.WriteLine()
    12. Console.Write("Bitte eingeben: ")
    13. Dim I() As String = Console.ReadLine.Split(" ")
    14. Console.CursorTop = 0
    15. Console.WriteLine("Name : " & Trim(I(0)) & Space(I(0).Length + p_length))
    16. Console.CursorTop = 1
    17. Console.WriteLine("Vorname: " & Trim(I(1)) & Space(I(1).Length + p_length))
    18. Console.CursorTop = 2
    19. Console.WriteLine("Alter : " & Trim(I(2)) & Space(I(2).Length + p_length))
    20. Console.CursorTop = 10
    21. Console.ReadLine()
    22. Main()
    23. End Sub
    24. End Module




    link_275
    Hello World