[C#] problem mit ausgabe bei Konsolen Anwendung

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Anno1503
Beiträge: 9
Registriert: 29.09.2008, 17:36

[C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Anno1503 »

Hallo auch,

Nach ewigem suchen habe ich natürlich wieder mal nichts in Google gefunden.
Also normalerweise ist es doch so, dass bei jeder eingabe mit Console.ReadLine()
also nach der eingabe von Zeichen , diese Zeichen dann immer noch bei der ausgabe da stehen.

Jetzt die Fragen:
Wie kann ich es ermöglichen, dass nach der Zeicheneingabe
die Zeichen nicht mehr mit ausgegeben werden?
bzw. nach der eingabe gelöscht werden, also den Zeichen verlauf nicht mehr sieht?

wäre schön wenn es jemand weis

MFG
Anno1503
Despotist
Establishment
Beiträge: 394
Registriert: 19.02.2008, 16:33

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Despotist »

Ich weiß jetzt nicht wie es bei C# ist weil ich da kaum mit Konsole arbeite aber normalerweise musst du dann den gesamten Bildschirm löschen und was du brauchst neu schreiben. Konsole ist ja einfach eins nach dem anderen ausgeben da kannst ud nicht beliebig in den Zeilen rumlöschen.
Unknown GER
Beiträge: 49
Registriert: 09.01.2003, 13:04

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Unknown GER »

Der Methode ReadKey() kannst du einen Boolschen Wert übergeben, ob das Zeichen angezeigt werden soll oder nicht (genau entgegengesetzt zu true/false). Du müsstest bzw. könntest also in einer Schleife mit ReadKey() Zeichen einlesen, diese prüfen, und bei Bedarf bzw. der Eingabe von Return die Schleife verlassen, ansonsten das eingelesene Zeichen an einen String anhängen. Voilà. :)

Hier mal ein - recht sinnfreies - Beispiel wie man eine Passworteingabe ganz naiv machen könnte (man würde noch Backspace extra behandeln wollen in der Schleife und evtl. auch alle anderen nichtdruckbaren Zeichen, bzw. nur die gewünschten Zeichen auch wirklich beachten).

Code: Alles auswählen

Console.Write("Password: ");

string password = string.Empty;

while (true)
{
    char key = Console.ReadKey(true).KeyChar;

    if (key == Environment.NewLine[0])
    {
        Console.WriteLine();
        break;
    }

    Console.Write('*');
    password += key;
}

Console.WriteLine("Your password is '{0}'.", password);
odenter
Establishment
Beiträge: 207
Registriert: 26.02.2009, 11:58

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von odenter »

In ner Schleife Console.Clear() und danach das schreiben was da stehen soll.
Anno1503
Beiträge: 9
Registriert: 29.09.2008, 17:36

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Anno1503 »

hallo,danke erstmal für die beiträge,
leider hatte ich noch kein erfolg mit den bisherigen Lösungsvorschlägen /:

MFG
Anno1503
odenter
Establishment
Beiträge: 207
Registriert: 26.02.2009, 11:58

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von odenter »

Warum willst Du denn die eingegebenen Zeichen löschen?

Wenn es für eine Passworteingabe sein soll, dann lass das Passwort eingeben und danach machste ein Clear, geht wunderbar.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4260
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Chromanoid »

also ich würde das ganze wie ordenter es vorgeschlagen hat machen. alles bis vor der zeicheneingabe nach einem clear auf die konsole hauen...

Ansonsten schau dir mal diese Funktionen der Konsole an:
MoveBufferArea
und SetCursorPosition
sowie die Eigenschaft CursorLeft/Top.

Soweit ich das sehe musst du vor dem Eintippen die Cursor Position merken und dann dannach nochmal und den beschriebenen Bereich überschreiben
Anno1503
Beiträge: 9
Registriert: 29.09.2008, 17:36

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Anno1503 »

Ohje jetzt stehe ich irgendwie ganz aufm schlauch /:,
könntest du Chromaid, mir mal ein beispiel Code nennen?
Jiba
Beiträge: 31
Registriert: 16.01.2010, 17:42

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Jiba »

Willst du
1. Das man während der ReadLine Anweisung die Zeichen sieht und nachdem Enter gedrückt wurde die eingegebenen Zeichen vom Bildschirm gelöscht werden oder
2. Eine Passwort eingabe Realisieren so wie von Unknown GER beschrieben nur das du nicht so genau weist wie das umzusetzen ist oder
3. Das man die eingegebenen Zeichen erst garnicht auf dem Bildschirm zu sehen bekommt

Ich Frag nur mal nach weil es hier mehrere lösungen giebt und keiner so 100% weiss was du machen willst (mich eingeschlossen).
Jiba
Beiträge: 31
Registriert: 16.01.2010, 17:42

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Jiba »

Ich denke Chromanoid meinte das ungefähr so:

Code: Alles auswählen

        static void Main(string[] args)
        {
            Console.Write("Test > ");

            int old_x = Console.CursorLeft;
            int old_y = Console.CursorTop;
            string text = Console.ReadLine();
            int new_x = Console.CursorLeft;
            int new_y = Console.CursorTop;

            Console.SetCursorPosition(old_x, old_y);
            for (int i = 0; i < text.Length; ++i)
            {   
                Console.Write(' ');
            }
            Console.SetCursorPosition(new_x, new_y);

            //oder so wenn an die alte position gesprungen werden soll
            //Console.SetCursorPosition(old_x, old_y);

            Console.ReadKey();
        }
Anno1503
Beiträge: 9
Registriert: 29.09.2008, 17:36

Re: [C#] problem mit ausgabe bei Konsolen Anwendung

Beitrag von Anno1503 »

Danke Jiba, das funktioniert einwandfrei ;)
Antworten