C# Console Frage?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich kann das Problem in einer Windows Konsole nicht reproduzieren. Stattdessen tritt das erwartete Zielverhalten ein.

Mögliche Gründe, die mir einfallen, warum es bei dir nicht klappt:

  • Du führst die Anwendung über eine Konsolenanwendung aus, die sich bei der Verwendung von Write und SetCursorPosition anders als die Windows Konsole verhält. Beachte, dass einige IDEs (Beispiel: Eclipse) eine Eigenimplementation einer Konsole integriert haben.
  • Bei Aktualisierung der ersten Zeile rutscht die zweite Zeile aus den sichtbaren Fensterbereich. Schau nach, ob du im Konsolenfenster scrollen kannst.
  • Du führst noch andere Anweisungen / Aktionen aus, die in deiner Fragebeschreibung nicht benannt werden.
FakeProfile 
Fragesteller
 18.08.2023, 09:27

Interessant. Habe es nun probiert mit Windows Terminal (Außerhalb des VS Debug Modus) und der alten Ansicht aus Prä Windows 11 Zeiten. Selbes Verhalten.

Bei mir scheint es so, als würde der aktuelle Pfad der nach der Ausführung erscheint, direkt nachrutschen,

Mache ich es so:

        static void Main()
        {
            Console.Clear();

            Console.SetCursorPosition(0, 0);
            Console.Write("Hallo Welt");

            Console.SetCursorPosition(0, 1);
            Console.Write("Hallo Du");

            Console.SetCursorPosition(0, 0);
            Console.Write("Your custom message");

            Console.WriteLine(); <-- DIESE zeile ist neu
        }

Erhalte ich Ausgabe:

"Your custom message

 allo Du"
Was mit dem h geschehen ist, keine Ahnung!

Scrollen kann ich nicht, nein.

0
FakeProfile 
Fragesteller
 18.08.2023, 09:33
@FakeProfile

Das fehlende H ist da, wenn ich das Fenster so mit dem Explorer öffne und nicht mit visual studio run mode. Insbesondere ein ,,ReadKey" am Ende führt dazu, dass ich mein Verhalten sehe ohne ein zusätzliches WriteLine();

0
regex9  18.08.2023, 11:23
@FakeProfile

Ich konnte es nun auf einem anderen Rechner reproduzieren. Da sich der Cursor noch in der ersten Zeile befindet, werden nachkommende Ausgaben vom System (so wie die Ausgabe des Kontextpfads nach Ausführung der Anwendung) die Folgezeilen überschreiben.

Du solltest vor Programmende (bzw. nach dem Überschreiben) die Cursorposition wieder ans Ende (z.B. in die dritte Zeile) setzen:

Console.SetCursorPosition(0, 2);
1

Was genau ist das Problem? Funktioniert doch genau so, wie es soll ...

Möglicherweise ist da ein anderer Fehler, den man nicht ausfindig machen kann, da zu wenig Informationen vorhanden sind. Oder verstehe ich da etwas falsch?

Bild zum Beitrag

Kompiliert und getestet auf Windows und Linux (Ubuntu)

 - (programmieren, Informatik, Programmiersprache)
FakeProfile 
Fragesteller
 18.08.2023, 09:36

Probier es mal ohne ReadKey(); und öffne es auf Windows direkt aus dem Terminal heraus, nicht bei der Doppelklick im Explorer, sonst sieht man ja nichts x)

0
FakeProfile 
Fragesteller
 18.08.2023, 09:57
@FaTech

Bei mir nun auch. Les dir mal das oben durch was ich unter regex9 Antwort geschrieben habe :D
Das war so mein Problem

0