none
Konsolenanwendung neu ausführen und Fenster leeren RRS feed

  • Frage

  •  

    Hallo zusammen!

     

    Ich habe eine Konsolenanwendung und möchte nachdem die Anwendung abgelaufen ist, mit einer Tastatureingabe entscheiden, ob die Anwendung geschlossen wird, oder das Fenster geleert und die Anwendung neu begonnen wird.

    Meine erste Frage dazu ist, wie ich das Fenster leeren kann. Wie kann ich dann das mit der Abfrage lösen, kann ich das in einen if else Block schreiben, oder gibt es dafür eine elegantere Lösung?

    Vielen Dank für die Hilfe.

    Sonntag, 3. August 2008 12:19

Antworten

  • Bildschirminhalt leeren geht via: System.Console.Clear();

    Das neustarten von Konsolenanwendungen kann ich dir nicht sagen. Bei Windows Forms Anwendungen gibt es dazu einen Befehl (System.Windows.Forms.Application.Restart(); )- aber der klappt glaube ich nicht bei Konsolenanwendungen.

    Wenn du den Pfad zu deiner Anwendung kennst, dann kannst du die Anwendung doch über einen System.Diagnostics.Process starten - die alte Anwendung Beenden und schon hast du den neustart erreicht.
    Sonntag, 3. August 2008 20:26
  •  

    Wenn es keine neue Instanz sein muss, dann tut es auch eine goto Anweisung. Das ist zwar stilistisch nicht das feinste, aber es funktioniert =)

    Montag, 4. August 2008 13:16
  • Eine relativ simple Lösung währe in der Main folgendes einzubauen:

    String weiter;

    do
    {
    ... // Hier kommt der eigendliche Code

    System.Console.WriteLine("\nNeu starten? (j/n)");
    weiter = System.Console.ReadLine();
    } while (weiter.Contains('J') || weiter.Contains('j'));

    Edit: Das bezieht sich übrigens auf den Eintrag direkt über diesem.
    Donnerstag, 7. August 2008 09:57

Alle Antworten

  • Bildschirminhalt leeren geht via: System.Console.Clear();

    Das neustarten von Konsolenanwendungen kann ich dir nicht sagen. Bei Windows Forms Anwendungen gibt es dazu einen Befehl (System.Windows.Forms.Application.Restart(); )- aber der klappt glaube ich nicht bei Konsolenanwendungen.

    Wenn du den Pfad zu deiner Anwendung kennst, dann kannst du die Anwendung doch über einen System.Diagnostics.Process starten - die alte Anwendung Beenden und schon hast du den neustart erreicht.
    Sonntag, 3. August 2008 20:26
  •  

    Ah ja, das mit Console.Clear funktioniert schon mal. Eigentlich will ich die Anwendung nicht neustarten, sondern den  Benutzer fragen ob er beenden oder neu beginnen möchte, beim beenden soll die Konsole geschlossen werden, beim neubeginn soll die prozedur einfach von vorne anfangen.

    Ich krieg das zwar mit case1: und goto case1; in eine if else schleife hin, finde das aber nicht sehr elegant.

    Hab zwar erst mit dem Programmieren angefangen vor 2 Wochen und das Programm ist ein einfacher Rechner, eine Beispiel Übung aus dem Buch, ich will aber auf eigene Faust diese Beispielanwendung schon "perfektionieren".

    Hab schon ausnahmebehandlungen eingebaut und Funktionen, die nach einer Ausnahme in der Eingabe (z.B. Buchstabe statt Zahl), die Zahl erneut abfragen statt zu beenden. Das hab ich mit case: und goto case; gelöst (was glaub ich auch nicht so elegant ist)...

    Wäre dankbar für weiter Hilfen und denkanstöße. Vielen Dank!

    Montag, 4. August 2008 13:09
  •  

    Wenn es keine neue Instanz sein muss, dann tut es auch eine goto Anweisung. Das ist zwar stilistisch nicht das feinste, aber es funktioniert =)

    Montag, 4. August 2008 13:16
  • Du kannst den System.Windows.Forms - Namespace verfügbar machen, und dann aus der Konsole auf die Application- Klasse und ihre Member zugreifen..
    Aber ist es nicht mit der Console.Clear - Methode auch getan?

    Schöne Grüße,
    Ferdi
    Dienstag, 5. August 2008 10:01
  •  

    Ja das mit der Console.Clear(); Anweisung ist perfekt, das stimmt. Ich wollte ja wissen ob es eine elegante, professionelle Moöglichkeit gibt den Benutzer zu fragen ob er neu beginnen oder beenden möchte. ich hab das mit einer if - else if Anweisung und goto case1; gelöst, dachte bloß das das nicht unbedingt ein guter Programierstil ist.

     

    Mit den Hilfen von euch hier hab ich jedenfalls das Programm so zum funktionieren gebracht, wie ich es wollte. Danke schon mal an alle....

    Dienstag, 5. August 2008 12:42
  • Eine relativ simple Lösung währe in der Main folgendes einzubauen:

    String weiter;

    do
    {
    ... // Hier kommt der eigendliche Code

    System.Console.WriteLine("\nNeu starten? (j/n)");
    weiter = System.Console.ReadLine();
    } while (weiter.Contains('J') || weiter.Contains('j'));

    Edit: Das bezieht sich übrigens auf den Eintrag direkt über diesem.
    Donnerstag, 7. August 2008 09:57
  • Danke! Das klappt auch gut. Ich finde das es etwas simpler und richtiger wirkt wie meine if else Anweisungen dafür.

    Donnerstag, 7. August 2008 12:42
  • danke :D
    Sonntag, 28. Februar 2016 12:09