Konsolentext überschreiben

RedWraith

Mitglied
Hallo !

Ich möchte wissen, ob es möglich ist, bereits geschriebene Zeichen in einem Konsolenfenster wieder zu überschreiben. Soetwas sieht man von Zeit zu Zeit in Form von Fortschrittsbalken und Prozentanzeigen bei z. Bsp. De- und Encodern.

Ich weiß, dass das "damals" in C++ noch ging. Und zwar musste man dort den quasi den Cursor auf die Anfangsposition setzen und konnte dann dort schreiben. Das Ganze war vom Charakter her nicht viel anders als das Schreiben in eine Textdatei (fseek, fwrite, etc..).

Weiß jemand von euch zufällig, wie man das realisiert bekommt ?

Mit freundlichen Grüßen

RW
 
Hi.

Mit der Methode SetCursorPosition kannst du den Cursor wieder an eine bestimmte Position setzen, und dann den dort stehenden Text überschreiben.

Hier ein kleines Beispiel.. *g*

C#:
using System;
using System.Threading;

public class SampleClass
{
	public static void Main()
	{
		Console.WriteLine("Statusbar Test Stuff");
		
		Random rnd = new Random();
		
		for (int i = 0; i <= 100; i++)
		{
			Console.SetCursorPosition(0, 2);
			PrintStatus(i);
			
			Thread.Sleep(rnd.Next(200, 500));
		}
		
	
	
		Console.WriteLine("Done. Press [enter] to exit.");
		Console.ReadLine();
	}
	
	private static char[] symbols = "|/-\\".ToCharArray();
	private static string[] messages = new string[] {
			"Adjusting synoptic levels      ",
			"Improving neurological deficits",
			"Ordering brain surgery         "
			// etc.. ;)
				};
	
	private static void PrintStatus(int percent)
	{
		char symbol = symbols[percent % symbols.Length];
				
		string done = "".PadLeft(percent / 10, '#');
		string left = "".PadLeft(10-done.Length, '-');
		
		Console.WriteLine(messages[percent % messages.Length]);
		
		Console.WriteLine("({0}) |{1}{2}| {3:000}%",
		symbol, done, left, percent);
	}
}

lg, Alex
 
Zurück