Dziwny (bug?) programu

dział ogólny

Dziwny (bug?) programu

Nowy postprzez Chlorek » niedziela, 25 grudnia 2011, 16:07

Tak więc dalej siedziałem nad problemem hotkey'ów, udało mi się znaleźć metodę użycia GetAsyncKeyState() bez masakrycznych powtórzeń i stosowania Sleep'a na końcu nieskończonej pętli sprawdzającej stan klawiszy. I napotkałem dziwny bug, przedstawię o co chodzi:
KOD cpp:     UKRYJ  
if(GetAsyncKeyState(VK_ESCAPE)) logfile << "[ESC]"; //TEN KOD DZIAŁA
if(GetAsyncKeyState(VK_ESCAPE)&1) logfile << "[ESC]"; //TEN KOD NIE DZIAŁA
if(GetAsyncKeyState(VK_ESCAPE)&1) cout << "[ESC]"; //KOD DZIAŁA

Teraz odnośnie kodu, który NIE DZIAŁA nie jest to w pełni tak, że nie działa, bo działa jednak dopiero wtedy gdy w buforze danych które mają zostać umieszczone w pliku jest 17 linii tekstu, dziwne prawda? Wniosek z moich prób jest taki, dodanie do GetAsyncKeyState() "&1" powoduje dziwny bug w fstream'ie, dziwne jest jednak że standardowe wrzucenie danych do strumienia by je wyświetlić na ekranie działa, tak więc jestem pewien, że warunek się spełnia w momencie naciśnięcia przycisku.

#Edit
Problem jest jeszcze dziwniejszy niż mi się wydawało początkowo. Jeśli warunek się spełnia to działają wszystkie funkcje za wyjątkiem tych operujących na plikach, próbowałem modyfikować plik za pomocą funkcji różnych bibliotek, nie tylko fstream ale też WinAPI (WriteFile) - efekt ten sam, czyli dziwny błąd.
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    Windows XPFirefox

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 61 gości

cron