Welchen Wert besitzt die ESC - Taste?

So ich bin gerade dabei nen Prog für meinen Dad zu schreiben Rechnungserstellung usw.
Hab ne ganz normale Switch-Case Anweisung gemacht als Menü. Und wenn ich jetzt ESC drücke soll die Switch-Case-Anweisung das Prog beenden. Doch wie geht das? oO Also welchen Wert hat Escape?
 
Achso danke hab das i-wie nicht gefunden in den Acii Tabellen die ich vonner Schule bekommen habe ;)

Code:
cout<<"\n\n\tWas moechten Sie tun? \n\t\xAF "<<flush;
		auswahl=getche();
		auswahl=auswahl+'\0';


		switch(auswahl)
		{
			case '1':	system("cls");
						cout<<"\n\t <1>  Artikel hinzuf\x81gen/\x84ndern"<<endl<<endl;
						break;
			case '2':	system("cls");
						cout<<"\n\t <2>  Artikel in Datei ausgeben (Artikel.txt)"<<endl<<endl;
						break;
			case '3':	system("cls");
						cout<<"\n\t <3>  Rechnungsdaten eingeben"<<endl<<endl;
						break;
			case '4':	system("cls");
						cout<<"\n\t <4>  Rechnung in Datei ausgeben (Rechnung.txt)"<<endl<<endl;
						break;
			case '\x1B': 	cout<<"\n\tDas Programm wird beendet..."<<endl<<endl;
						exit(0);		
			default:	cout<<"\n\tEs wurde eine falsche Eingabe getaetigt!"<<endl<<endl;
						break;

		}
Jedoch habe ich jetzut das Problem das der mir die Menüpunkte nicht mehr anzeigt sondern direkt weiter geht zur While-Schleife oO
 
Du solltest wohl erst das Menü anzeigen, und dann in deine case-Anweisung springen, damit man auch sieht, was man mit "1","2", ... auswählen kann. (fände ich logischer :))
Wenn du es aber doch so wie oben machen willst, könntest du mit Sleep([Zeit InMillisekunden]) arbeiten.

gruß Corni

edit: fast vergessen: für Sleep(ms) musst du die windows.h einbinden.
 
Das war ja schon drinne war ja nurn Auzug xD

Code:
// Rechnungserstellungsprogramm
// 1-8-2006 (c) by Marco Matthias Franke

#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "copyright.h"
#include <string.h>

void main()
{
	char auswahl=' '; 
	int x=1;

	copyright();
	Sleep(3500);
	system("cls");
	system("color 07");

	do
	{
		SYSTEMTIME tm;
		GetLocalTime(&tm);
		cout<<"\n\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB";
		cout<<"\n\t\t\xBA "<<tm.wHour<<":"<<tm.wMinute<<" Uhr \t\t\t  "<<tm.wDay<<"."<<tm.wMonth<<"."<<tm.wYear<<" \xBA";
		cout<<"\n\t\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC"<<endl;
		// Menü
		cout<<"\n\t <1>  Artikel hinzuf\x81gen/\x84ndern";
		cout<<"\n\t <2>  Artikel in Datei ausgeben (Artikel.txt)";
		cout<<"\n\t <3>  Rechnungsdaten eingeben";
		cout<<"\n\t <4>  Rechnung in Datei ausgeben (Rechnung.txt)";
		cout<<"\n\t <ESC>  Programm beenden";
		//Menü

		cout<<"\n\n\tWas moechten Sie tun? \n\t\xAF "<<flush;
		auswahl=getche();
		auswahl=auswahl+'\0';


		switch(auswahl)
		{
			case '1':	system("cls");
						cout<<"\n\t <1>  Artikel hinzuf\x81gen/\x84ndern"<<endl<<endl;
						break;
			case '2':	system("cls");
						cout<<"\n\t <2>  Artikel in Datei ausgeben (Artikel.txt)"<<endl<<endl;
						break;
			case '3':	system("cls");
						cout<<"\n\t <3>  Rechnungsdaten eingeben"<<endl<<endl;
						break;
			case '4':	system("cls");
						cout<<"\n\t <4>  Rechnung in Datei ausgeben (Rechnung.txt)"<<endl<<endl;
						break;
			case '\x1B': 	cout<<"\n\tDas Programm wird beendet..."<<endl<<endl;
						exit(0);		
			default:	cout<<"\n\tEs wurde eine falsche Eingabe getaetigt!"<<endl<<endl;
						break;

		}
		system("cls");
	}
	while(x!=0);
		
}

hier die copyright.cpp
Code:
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <locale>
#include <iomanip>
#include <ios>
#include <string>

using namespace std;

void copyright()
{
	SYSTEMTIME tm;
	GetLocalTime(&tm);
	system("color 0A");

	cout<<"\n\n\n\n\n\t\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB";
	cout<<"\n\t\t\t\xBA (c) 2006 by Marco Franke \xBA";
	cout<<"\n\t\t\t\xBA      reaL-Insanity.de    \xBA";
	cout<<"\n\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCA\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCA\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB";
	cout<<"\n\t\t\xBA   Dieses Programm  dient der Erstellung  \xBA";
	cout<<"\n\t\t\xBA einer Rechnung mit Festgelegten Artikeln \xBA";
	cout<<"\n\t\t\xCC\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB9";
	cout<<"\n\t\t\xBA "<<tm.wHour<<":"<<tm.wMinute<<" Uhr \t\t\t  "<<tm.wDay<<"."<<tm.wMonth<<"."<<tm.wYear<<" \xBA";
	cout<<"\n\t\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC"<<endl<<endl;
}
 
Wozu willst du den Menüpunkt nochmal ausgeben?
Wenns sein muss, machs doch mit Sleep().
Ist doch logisch, dass er sofort zur while-Schleife geht, ist ja auch kein Code dazwischen, der verarbeitet werden muss.
Bsp: case '1'
-->system("cls");
-->cout<<"\n\t <1> Artikel hinzuf\x81gen/\x84ndern"<<endl<<endl;
-->brake; <- hier wird die case-Anweisung verlassen
-->bei while(x!=0); wird wieder zum Schleifenanfang gesprungen

gruß Corni
 
In deiner letzen case Anweisung fehlt ein break; und da x nie 0 wird ist deine Schleifenkonstruktion so wie sie da is sinnlos. Also entweder beendest du auf 0 als Eingabe dann könntest du auch das exit(0) umgehen was man in C++ eh nie benutzen sollte, oder du setzt x auf 0 wenn Escape gedrückt wurde. Wenn du bei dem exit() bleiben willst könntest du mit while(1) eine Endlosschleife machen.

Desweiteren wenn du C++ nutzt heissen die Header <iostream> und <string> also das .h kannst du dort weglassen. Statt stdio.h könntest du auch die C++ Variante cstdio nutzen.
Und anschliessend müsstest du mit using std::cout noch die Anweisungen aus der C++ standard libary in den lokalen namespace importieren.

Deweiteren würde ich mich an den Sprachstandard halten und etwas mehr auf Portabilität achten was bei einem derartigen Programm doch kein Problem sein sollte. Sprich system() Aufrufe, unnötige Farben usw weg und die Zeit über ctime und nicht die irgendwelches Winapi Zeugs nehmen.

In C++ kannst du auch std::cin>> nutzen anstatt von getche() dann sparst du dir das manuelle mit 0 terminieren was in dem Fall eh sinnlos wäre.

usw... kein Bock mehr jetzt ;)
 
Hey cool danke für deine Einwände und deine verbesserungsvorschläge :) werd ich nacher direkt mal einbauen wenn ich wieder zuhause bin :)
Da sieht man mal was für inner Schule fürn Müll lernen ^^
 
Zurück
Oben