Runtime error- zmienna niezadeklarowana?

0

Używam Visual studio IDE

#include <Windows.h>
#include <iostream>

using namespace std;

int main(void)
{
	int counter;


	while(counter<50)
	{
		if(GetAsyncKeyState(VK_LSHIFT))
		cout<<"Wcisnąłeś lewy shift ";
		counter++;
	}


	system("PAUSE");
}

Dlaczego wyskakuje runtime error, że niby nie zadeklarowałem countera?

1

Nie zainicjowałeś go, jego wartość to jakieś śmieci.

0
#include <Windows.h>
#include <iostream>

using namespace std;

int main(void)
{
	int counter=0;


	cout<<GetAsyncKeyState(VK_LSHIFT);

	while(counter<50)
	{
		if(GetAsyncKeyState(VK_LSHIFT))
		{
			cout<<"Wcisnąłeś lewy shift ";
			counter++;
		}
	}




	system("PAUSE");
}

Teraz wystarczy że nacisnę raz lewy szift a w okienku konsoli pojawia się 50 napisów "Wcisnąłeś lewy shift". Co zrobić, aby każde wciśnięcie było rejestrowane tylko raz?

0

Co prawda u mnie tego nie odpalę (brak Windows.h, być może dlatego że mam Linuksa ew nie mam jakiegoś pakietu),ale wydaje mi się że poza zwiększeniem counter-a musisz poczekać ( np jedną dziesiątą sekundy ) ew "przystopować" w jakiś sposób aż puścisz shifta, bo tak krótka pętla może skończyć się wykonywać te 50 razy zanim go puścisz. To nie guzik z literą/cyfrą więc "opóźnienia przy powtórzeniu" od strony systemu brak.

0
bool byl_wcisniety = GetAsyncKeyState(VK_LSHIFT);

while(...) {
   bool jest_wcisniety = GetAsyncKeyState(VK_LSHIFT);
   if (byl_wcisniety != jest_wcisniety) cout << jest_wcisniety ? "Wcisnąłeś lewy shift " : "Zwolniles lewy shift ";
   byl_wcisniety = jest_wcisniety;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1