Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo leute,

Wenn ich hab etwas geschrieben in dem die Pfeiltasten abgepfragt werden und dann etwas passiert, ich weiß das Pfeiltasten keinen direkt eigenen Ascii code haben sondern, aus 2 zeichen bestehen.

laut dieser Website: Datasource :: Programmierung :: Tastaturcodes unter DOS

wäre das 0 - 80 für Pfeil nach unten.

Es ist kein Problem wenn ich jetzt ein doppeltes _getch(); mache und dann abfrage obs z.b. 80 ist, nur wenn man jetzt eine andere Taste drückt, nimmt er das Zeichen z.b. 109 für 'm'

dann ist beim 2ten getch nichts mehr im puffer!

Jetzt wollte ich sozusagen beim ersten Zeichenabfragen, also ob dies nun das Vorzeichen der Pfeil tasten ist oder nicht, nur jetzt habe ich das Problem das es anscheinend nicht 0 ist

welches Zeichen ist es denn nun?

Also wenn ich jetzt hab

char tmp = _getch();

if(tmp == ??)

was muss da jetzt hin? mit 0 geht es nicht...

MfG Artery

  • Autor

Ernsthaft wieso gibts keine Editfunktion mehr??

Habs jetzt gelöst und zwar ist das Zeichen -32 nicht 0 :/

habs rausgefunden habe in dem ich mir einfach mal den Wert angeguckt habe der beim Erstenmal in tmp stand =)

Nur eine Frage wenn ich 2 tasten aufeinmal drücke funktionierts nicht mehr voran liegt das? Bzw. wie kann ich das fixen?

Edit: Wieso kann ich den Beitrag editieren die anderen nicht??

while(1)

{

	while(_kbhit()== 0)

	{

		char tmp = _getch();


		if(tmp == -32)

		{

			char tmp2 = _getch();

			if(tmp == -32 && tmp2 == 72 || tmp == -32 && tmp2 == 80)

			{

				tmp = tmp2;


				if(tmp == 80)

				{

					if(ButtonCrsLoc == 6)

					{

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0);

						ButtonCrsLoc = 0;

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0);

					}

					else

					{

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0);

						ButtonCrsLoc = ButtonCrsLoc + 1;

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0);

					}

					break;

				}

				if(tmp == 72)

				{

					if(ButtonCrsLoc == 0)

					{

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0);

						ButtonCrsLoc = 6;

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0);

					}

					else

					{

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0);

						ButtonCrsLoc = ButtonCrsLoc - 1;

						ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0);

					}

					break;

				}

			}	

		}				

	}

}

Ernsthaft wieso gibts keine Editfunktion mehr??

Edit: Wieso kann ich den Beitrag editieren die anderen nicht??

Weil man zum editieren ein 15 Minuten Zeitfenster hat! Danach gehts nicht mehr!

Und das war auch vor der Design Änderung schon so!

Grüße Snipes83

  • Autor

So hab nochmal was ausprobiert, ist etwas übersichtlicher:

while(_kbhit() == 0)

	  {

		  cout << "1";

		  tmp = _getch();

		  if(_kbhit() == 1)

		  {

			  cout << "Seems good";

			  fflush(stdin);

		  }

		  if(tmp == 109)

		  {

			  cout << tmp;

		  }

	  }
Wenn ich jetzt 2 tasten gleichzeitig drücke springt der in die Erste if abfrage rein gibt "Seems Good" aus, danach springt er aus der while-schleife, und wenn ich weitere while Schleife folgen lassen ungefähr so:
	while(_kbhit() == 0)

	 {

		 cout << "1";

		 tmp = _getch();

		 if(_kbhit() == 1)

		 {

			 cout << "Seems good";

			 bug = true;

			 fflush(stdin);

		 }

		 if(tmp == 109)

		 {

			 cout << tmp;

		 }

	 }




  while(_kbhit() == 0)

	{

		  cout << "2";

		  tmp = _getch();

		  if(_kbhit() == 1)

		  {

			  cout << "Seems good";

			  fflush(stdin);

		  }

		  if(tmp == 109)

		  {

			  cout << tmp;

		  }

	 }

übergeht er die zweite schleife und macht mit den folgenden Befehlen weiter! Wenn ich z.b. eine der Schleifen in while(1)schleifen packe führt er alles in der schleife aus, ausser die Schleife mit _kbhit()...

Das heißt im Endeffekt, das beim gleichzeitigen Drücken zweier Tasten, das Event _kbhit() ständig true bleibt.

Ich habe bisher nur eine Möglichkeit gefunden das zu unterbinden, und zwar mit einer Eingabeaufforderung wie cin.

Nur das Problem ist, das ich nicht immer wenn jemand 2 tasten drückt ne Eingabe fordern kann...

Wie kann ich _kbhit() wieder auf false setzte ohne eingabe?? Bzw. woran liegts das es true bleibt?

MfG Artery

PS: Das ist echt wichtig das ich das löse :/

Bearbeitet von Artery

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.