Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

'Ó' pojawiające się przy naciśnięciu strzałki

Ostatnio zmodyfikowano 2010-04-14 15:38
Autor Wiadomość
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:

C/C++
#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;
    //------aplikacja
    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 ) // edytuj pliki
                    {
                        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: // prawo
                                ++x;
                                gotoxy( x, y );
                                break;
                               
                            case 75: // lewo
                                --x;
                                gotoxy( x, y );
                                break;
                               
                            case 80: // dol
                                ++y;
                                gotoxy( x, y );
                                break;
                               
                            case 72: // gora
                                --y;
                                gotoxy( x, y );
                                break;
                               
                                default:
                                klawisz = znak;
                                cout << klawisz;
                               
                               
                               
                               
                               
                                /*if(znak == -3272 || znak == -3280 || znak == -3275 || znak == -3277)
                                                                    {                  // PROBLEM!!
                                                                        cout << " ";
                                                                    }else cout << klawisz;*/
                                break;
                            };
                        };
                    };
                   
                    if( y == 6 ) // podejrzyj pliki
                    {
                        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
P-16111
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
P-16113
Pirotechnik
Temat założony przez niniejszego użytkownika
» 2010-04-13 17:03:59
to samo :(
P-16114
Pirotechnik
Temat założony przez niniejszego użytkownika
» 2010-04-13 17:28:25
Pomoże ktoś??
P-16116
pekfos
» 2010-04-13 17:32:22
a co zrobiłeś? może źle? daj kod;
P-16117
Pirotechnik
Temat założony przez niniejszego użytkownika
» 2010-04-13 17:35:32
C/C++
#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;
    //------aplikacja
    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 ); // usunac
    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 ) // edytuj pliki
                    {
                        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: // prawo
                                ++x;
                                gotoxy( x, y );
                                break;
                               
                            case 75: // lewo
                                --x;
                                gotoxy( x, y );
                                break;
                               
                            case 80: // dol
                                ++y;
                                gotoxy( x, y );
                                break;
                               
                            case 72: // gora
                                --y;
                                gotoxy( x, y );
                                break;
                               
                                default:
                                klawisz = znak;
                                cout << klawisz;
                               
                                /*if(znak == -3272 || znak == -3280 || znak == -3275 || znak == -3277)
                                                                    {                  // PROBLEM!!
                                                                        cout << " ";
                                                                    }else cout << klawisz;*/
                                break;
                            };
                        };
                    };
                   
                    if( y == 6 ) // podejrzyj pliki
                    {
                        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";
};
P-16118
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.
P-16119
pekfos
» 2010-04-13 18:18:09
a to co?
while( i = 1 )
P-16120
« 1 » 2 3
  Strona 1 z 3 Następna strona