Pirotechnik Temat założony przez niniejszego użytkownika |
'Ó' pojawiające się przy naciśnięciu strzałki » 2010-04-13 16:56:20 Mam taki program: #include <iostream> #include <conio.h> #include <cstring> #include "F:\CodeBlocks\ddt-console\ddt-console\ddtconsole.h" #include <fstream>
using namespace std; using ddt::console::textcolor; using ddt::console::gotoxy;
void kursor(); void menu(); void menulogowania(); void menurejestrowania(); int menug();
int main() { menug(); }
int menug() { int rozmiar; int znak; int i = 0; int x, y; y = 5; menu(); gotoxy( 19, 5 ); kursor(); while( i = 1 ) { znak = getch(); switch( znak ) { case 80: system( "cls" ); menu(); x = 19; ++y; gotoxy( x, y ); kursor(); if( y == 8 ) { system( "cls" ); menu(); x = 19; y = 7; gotoxy( x, y ); kursor(); }; break; case 72: system( "cls" ); menu(); x = 19; --y; gotoxy( x, y ); kursor(); if( y == 4 ) { system( "cls" ); menu(); x = 19; y = 5; gotoxy( x, y ); kursor(); }; break; case 13: if( x == 19 && y == 5 ) { system( "cls" ); menulogowania(); }; if( x == 19 && y == 6 ) { system( "cls" ); menurejestrowania(); }; if( x == 19 && y == 7 ) { return 0; }; break; }; }; };
void kursor() { textcolor( 7 ); cout << "-->"; }
void menu() { gotoxy( 28, 2 ); textcolor( 30 ); cout << "Witaj w \"Bazie Danych\""; textcolor( 13 ); gotoxy( 23, 5 ); cout << "Wczytaj baze danych"; gotoxy( 23, 6 ); cout << "Wprowadz nowa baze danych"; gotoxy( 23, 7 ); cout << "Wyjscie"; }
void menulogowania() { void menuedycji(); char ID[ 30 ]; char bufor[ 1024 ]; char haslo[ 100 ]; int rozmiar; int i, x, y; char dane[ 999999 ]; char znak; i = 1; x = 19; y = 5; textcolor( 14 ); cout << "Podaj nick: "; cin >> ID; rozmiar = strlen( ID ); ID[ rozmiar + 0 ] = '.'; ID[ rozmiar + 1 ] = 't'; ID[ rozmiar + 2 ] = 'x'; ID[ rozmiar + 3 ] = 't'; ID[ rozmiar + 4 ] = '\0'; ID[ rozmiar + 5 ] = '\0'; gotoxy( 20, 20 ); cout << ID; gotoxy( 1, 2 ); cout << "Haslo: "; cin >> haslo; fstream plik; plik.open( ID, ios::in | ios::out ); plik.getline( bufor, 1024 ); if( plik.is_open() == true ) { if( strcmp( haslo, bufor ) == false ) { while( i = 1 ) { znak = getch(); switch( znak ) { case 72: system( "cls" ); menuedycji(); x = 19; --y; gotoxy( x, y ); kursor(); if( y == 4 ) { system( "cls" ); menuedycji(); x = 19; y = 5; gotoxy( x, y ); kursor(); }; break; case 80: system( "cls" ); menuedycji(); x = 19; ++y; gotoxy( x, y ); kursor(); if( y == 8 ) { system( "cls" ); menuedycji(); x = 19; y = 7; gotoxy( x, y ); kursor(); }; break; case 13: if( y == 5 ) { system( "cls" ); cout << "Po nacisnieciu ENTER zapisuje do pliku!!"; system( "cls" ); gotoxy( 1, 1 ); y = 1; x = 1; plik.read( dane, 1024 ); textcolor( 30 ); cout << dane; gotoxy( x, y ); i = 0; char klawisz; while( i = 1 ) { znak = getch(); switch( znak ) { case 77: ++x; gotoxy( x, y ); break; case 75: --x; gotoxy( x, y ); break; case 80: ++y; gotoxy( x, y ); break; case 72: --y; gotoxy( x, y ); break; default: klawisz = znak; cout << klawisz; break; }; }; }; if( y == 6 ) { system( "cls" ); plik.read( dane, 999999 ); cout << dane; }; if( y == 7 ) { system( "cls" ); plik.close(); menug(); }; break; }; }; } else cout << "ERROR!! Zle haslo lub login!!"; } else cout << "ERROR!! Zle haslo lub login!!!"; }
void menurejestrowania() { char nazwa[ 1024 ]; char chaslo[ 100 ]; int rozmiar; textcolor( 30 ); cout << "Podaj nazwe bazy danych: "; cin >> nazwa; rozmiar = strlen( nazwa ); nazwa[ rozmiar + 0 ] = '.'; nazwa[ rozmiar + 1 ] = 't'; nazwa[ rozmiar + 2 ] = 'x'; nazwa[ rozmiar + 3 ] = 't'; nazwa[ rozmiar + 4 ] = '\0'; nazwa[ rozmiar + 5 ] = '\0'; cout << "Podaj haslo dostepu: "; cin >> chaslo; cin.clear(); ofstream pliczek( nazwa ); pliczek.close(); fstream plig; plig.open( nazwa, ios::in | ios::out ); plig << chaslo; plig.flush(); plig.close(); cout << "Pomyslnie utworzono baze danych!!"; };
void menuedycji() { textcolor( 30 ); gotoxy( 28, 2 ); cout << "Co robisz??"; textcolor( 13 ); gotoxy( 23, 5 ); cout << "Edytuj plik"; gotoxy( 23, 6 ); cout << "Przejrzyj plik"; gotoxy( 23, 7 ); cout << "Wyloguj"; }; Jak w temacie napisałem po naciśnięciu strzałki w 'edycji pliku' za kursorem pojawia się litera 'Ó' podejrzewam że ma to cós wspólnego z kodem ASCII klawiszy ale napisałem sobie program do sprawdzania klucza i podczas wyświetlania sie strzałki wyskakują 2 kody 0_o jeden to -32 a drugi zalezy od strzałki. Prosze o pomoc |
|
pekfos |
» 2010-04-13 17:00:08 To kod specjalny oznaczający że nacisnąłeś specjalny klawisz. Wychwytuj go to nie będzie sprawiał problemu. używaj typu unsigned char lub unsigned int do znaków to ten kod będzie miał wartość dodatnią 224 |
|
Pirotechnik Temat założony przez niniejszego użytkownika |
» 2010-04-13 17:03:59 to samo :( |
|
Pirotechnik Temat założony przez niniejszego użytkownika |
» 2010-04-13 17:28:25 Pomoże ktoś?? |
|
pekfos |
» 2010-04-13 17:32:22 a co zrobiłeś? może źle? daj kod; |
|
Pirotechnik Temat założony przez niniejszego użytkownika |
» 2010-04-13 17:35:32 #include <iostream> #include <conio.h> #include <cstring> #include "F:\CodeBlocks\ddt-console\ddt-console\ddtconsole.h" #include <fstream>
using namespace std; using ddt::console::textcolor; using ddt::console::gotoxy;
void kursor(); void menu(); void menulogowania(); void menurejestrowania(); int menug();
int main() { menug(); }
int menug() { int rozmiar; int znak; int i = 0; int x, y; y = 5; menu(); gotoxy( 19, 5 ); kursor(); while( i = 1 ) { znak = getch(); switch( znak ) { case 80: system( "cls" ); menu(); x = 19; ++y; gotoxy( x, y ); kursor(); if( y == 8 ) { system( "cls" ); menu(); x = 19; y = 7; gotoxy( x, y ); kursor(); }; break; case 72: system( "cls" ); menu(); x = 19; --y; gotoxy( x, y ); kursor(); if( y == 4 ) { system( "cls" ); menu(); x = 19; y = 5; gotoxy( x, y ); kursor(); }; break; case 13: if( x == 19 && y == 5 ) { system( "cls" ); menulogowania(); }; if( x == 19 && y == 6 ) { system( "cls" ); menurejestrowania(); }; if( x == 19 && y == 7 ) { return 0; }; break; }; }; };
void kursor() { textcolor( 7 ); cout << "-->"; }
void menu() { gotoxy( 28, 2 ); textcolor( 30 ); cout << "Witaj w \"Bazie Danych\""; textcolor( 13 ); gotoxy( 23, 5 ); cout << "Wczytaj baze danych"; gotoxy( 23, 6 ); cout << "Wprowadz nowa baze danych"; gotoxy( 23, 7 ); cout << "Wyjscie"; }
void menulogowania() { void menuedycji(); char ID[ 30 ]; char bufor[ 1024 ]; char haslo[ 100 ]; int rozmiar; int i, x, y; char dane[ 999999 ]; unsigned char znak; i = 1; x = 19; y = 5; textcolor( 14 ); cout << "Podaj nick: "; cin >> ID; rozmiar = strlen( ID ); ID[ rozmiar + 0 ] = '.'; ID[ rozmiar + 1 ] = 't'; ID[ rozmiar + 2 ] = 'x'; ID[ rozmiar + 3 ] = 't'; ID[ rozmiar + 4 ] = '\0'; ID[ rozmiar + 5 ] = '\0'; gotoxy( 20, 20 ); cout << ID; gotoxy( 1, 2 ); cout << "Haslo: "; cin >> haslo; fstream plik; plik.open( ID, ios::in | ios::out ); plik.getline( bufor, 1024 ); if( plik.is_open() == true ) { if( strcmp( haslo, bufor ) == false ) { while( i = 1 ) { znak = getch(); switch( znak ) { case 72: system( "cls" ); menuedycji(); x = 19; --y; gotoxy( x, y ); kursor(); if( y == 4 ) { system( "cls" ); menuedycji(); x = 19; y = 5; gotoxy( x, y ); kursor(); }; break; case 80: system( "cls" ); menuedycji(); x = 19; ++y; gotoxy( x, y ); kursor(); if( y == 8 ) { system( "cls" ); menuedycji(); x = 19; y = 7; gotoxy( x, y ); kursor(); }; break; case 13: if( y == 5 ) { system( "cls" ); cout << "Po nacisnieciu ENTER zapisuje do pliku!!"; getch(); system( "cls" ); gotoxy( 1, 1 ); y = 1; x = 1; plik.read( dane, 1024 ); textcolor( 30 ); cout << dane; gotoxy( x, y ); i = 0; unsigned char klawisz; while( i = 1 ) { znak = getch(); switch( znak ) { case 77: ++x; gotoxy( x, y ); break; case 75: --x; gotoxy( x, y ); break; case 80: ++y; gotoxy( x, y ); break; case 72: --y; gotoxy( x, y ); break; default: klawisz = znak; cout << klawisz; break; }; }; }; if( y == 6 ) { system( "cls" ); plik.read( dane, 999999 ); cout << dane; }; if( y == 7 ) { system( "cls" ); plik.close(); menug(); }; break; }; }; } else cout << "ERROR!! Zle haslo lub login!!"; } else cout << "ERROR!! Zle haslo lub login!!!"; }
void menurejestrowania() { char nazwa[ 1024 ]; char chaslo[ 100 ]; int rozmiar; textcolor( 30 ); cout << "Podaj nazwe bazy danych: "; cin >> nazwa; rozmiar = strlen( nazwa ); nazwa[ rozmiar + 0 ] = '.'; nazwa[ rozmiar + 1 ] = 't'; nazwa[ rozmiar + 2 ] = 'x'; nazwa[ rozmiar + 3 ] = 't'; nazwa[ rozmiar + 4 ] = '\0'; nazwa[ rozmiar + 5 ] = '\0'; cout << "Podaj haslo dostepu: "; cin >> chaslo; cin.clear(); ofstream pliczek( nazwa ); pliczek.close(); fstream plig; plig.open( nazwa, ios::in | ios::out ); plig << chaslo; plig.flush(); plig.close(); cout << "Pomyslnie utworzono baze danych!!"; };
void menuedycji() { textcolor( 30 ); gotoxy( 28, 2 ); cout << "Co robisz??"; textcolor( 13 ); gotoxy( 23, 5 ); cout << "Edytuj plik"; gotoxy( 23, 6 ); cout << "Przejrzyj plik"; gotoxy( 23, 7 ); cout << "Wyloguj"; }; |
|
DejaVu |
» 2010-04-13 18:05:57 Gdy wciskasz klawisze funkcyjne (np. strzałki) to do bufora klawiatury trafiają 2 znaki (lub więcej) tak więc poprawne obsłużenie strzałek wymaga odczytania dwóch znaków.
Nie wiem czy o to Ci chodzi, ale tak to wygląda z technicznego punktu widzenia. |
|
pekfos |
» 2010-04-13 18:18:09 |
|
« 1 » 2 3 |