Laden...

In der Konsole geschriebenes durch Eingabe verschieben

Erstellt von Pernox vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.928 Views
P
Pernox Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
In der Konsole geschriebenes durch Eingabe verschieben

Hallo zusammen,

ihr werdet mit Sicherheit lachen, aber ich verzweifle grad...es ist wahrscheinlich so einfach das es hier eigt gar nicht reingehört aber ich versuche es trotzdem mal.

Kann man in einer Konsolenanwendung etwas verschieben das durch Console.Write festgelegt ist?
Ich habe hier grad das Beispiel eines Warenrechners, wo hinter dem Betrag (der eingegeben werden muss) ein "EUR" steht...dies sollte sich bestenfalls durch die Eingabe einer Zahl nach hinten verschieben.

Ist das möglich?

Danke schonmal für eure Hilfe

D
500 Beiträge seit 2007
vor 9 Jahren

Hallo Pernox,

meinst Du etwa String Padding?

Gruss,
DaMoe

P
Pernox Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren

Also es wird zwar ein "EUR" angezeigt das ich durch SetCursorPosition dorthin verschoben habe...aber wenn die Zahl zu lang wird dann verschwindet das EUR quasi durch "überschreiben" und nach meinem Wunsch würde sich das EUR nach rechts verschieben wenn ich etwas schreibe

1.696 Beiträge seit 2006
vor 9 Jahren
Console.WriteLine("Betrag: {0} {1}", varBetrag, varWaehrung);

wo ist das Problem?

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

T
314 Beiträge seit 2013
vor 9 Jahren

Du suchst Console.CursorLeft.

Wenn die Zahl eingegeben wird überschreibst Du einfach den aktuellen Zeileninhalt mit dem was eingegeben wurde.


while(true)
{
                Console.CursorLeft = 0;
                Console.Write(curVal);
                key = Console.ReadKey();
                Console.Write(" EUR");

                if (Char.IsNumber(key.KeyChar))
                    curVal += key.KeyChar;
}
16.835 Beiträge seit 2008
vor 9 Jahren

CursorLeft allein hat das Problem, dass Du damit evtl. nicht alle Zeichen der aktuellen Zeile überschreibst und so überleibsel hast.

Du musst also:

  1. Position auf 0 setzen (CursorLeft oder SetPosition)
  2. Die Zeile komplett überschreiben (Console.Write(new string(' ', Console.WindowWidth)); )
  3. Position erneut auf 0 setzen
  4. Zeile neu schreiben.
49.485 Beiträge seit 2005
vor 9 Jahren

Hallo zusammen,

aus meiner Sicht würde es vom Grundgedanken her reichen, sich die Cursorposition zu merken, ab dort neu " EUR" zu auszugeben und den Cusor wieder an die gemerkte Position zu setzen. Zumindest, wenn an die Zahl nur am Ende Ziffern angefügt werden können. Wenn am Ende auch Ziffern gelöscht werden können, müsste man " EUR " ausgeben. Wenn innerhalb der Zahl editiert werden kann, würde ich nach jeder einzelnen Änderung die jeweils die ganze Zahl + " EUR " ausgeben.

Man kann auch Pufferbereiche verschieben/kopieren. Aber ich denke, für das hier gewünschte wird es einfacher sein, den zu verschiebenden Text einfach neu auszugeben.

herbivore