Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 21 Marzo 2014, 01:58 am



Título: "bloquear" teclas
Publicado por: m@o_614 en 21 Marzo 2014, 01:58 am
Saludos

Si por ejemplo yo quiero escribir en un archivo solamente dígitos del 0 al 9, que no se acepte ningun otro caracter, y sin necesidad de hacer ninguna otra validación(como leer el archivo y verificar caracter por caracter que todos sean numeros), hay alguna manera de "bloquear" algunas teclas y que no le permita al usuario ingresar caracteres que no sean numeros?? esto se podria hacer???


Título: Re: "bloquear" teclas
Publicado por: rulovive en 21 Marzo 2014, 02:21 am
sip.. con un if que solo permita leer carateres del 0 al 9... esto se hace con el codigo ascii.. cada tecla tiene un valor numerico empezando por la primera letra del abecedario en minusculas, hasta la ultima letra del abecedario en mayuscula... despues de eso siguen los numeros y ellos tienen un caracter ascii (no recuerdo si el orden de caracteres de teclado es asi o van primero los numeros) solo pon en la condicion que si el caracter pulsado es menor al que corresponde al 1 y mayor al que corresponde al 0 -el cual es el ultimo de los diez- la tecla sea nula... si estoy equivocado corrijanme XD


Título: Re: "bloquear" teclas
Publicado por: engel lex en 21 Marzo 2014, 02:38 am
rulovive XD si, fallas en muchas cosas XD

el mayor es el 9, el menor siempre es 0, XD 0<9 siempre, los numeros vienen primero que las letras mayusculas, luego las minúsculas... los numeros empiezan en el carácter 48 (0x30), las mayusculas en 64+1 (0x40+1) (lo digo así porque es la mejor manera de recordarlo)  y las minúsculas en 96+1 (0x60+1)

por otr lado el lo que quieres es que en consola no se escriba cuando la tecla no sea valida, justamente la intencion es no revisar caracter por caracter

aunque no se si es buena practica... con <conio.h> puedes, con la funcion getch();


un ejemplo

Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #define UP_ARROW 224
  4. using namespace std;
  5.  
  6. int main() {
  7.     int cInput = getch();
  8.     if(cInput==UP_ARROW){cout << "fin" << endl;}
  9.     cin.get();
  10. return 0;
  11. }
  12.  


Título: Re: "bloquear" teclas
Publicado por: rulovive en 21 Marzo 2014, 02:42 am
rulovive XD si, fallas en muchas cosas XD

el mayor es el 9, el menor siempre es 0, XD 0<9 siempre, los numeros vienen primero que las letras mayusculas, luego las minúsculas... los numeros empiezan en el carácter 48 (0x30), las mayusculas en 64+1 (0x40+1) (lo digo así porque es la mejor manera de recordarlo)  y las minúsculas en 96+1 (0x60+1)

por otr lado el lo que quieres es que en consola no se escriba cuando la tecla no sea valida, justamente la intencion es no revisar caracter por caracter

aunque no se si es buena practica... con <conio.h> puedes, con la funcion getch();


un ejemplo

Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #define UP_ARROW 224
  4. using namespace std;
  5.  
  6. int main() {
  7.     int cInput = getch();
  8.     if(cInput==UP_ARROW){cout << "fin" << endl;}
  9.     cin.get();
  10. return 0;
  11. }
  12.  

jajaja cierto.... lo habia hecho en modo visual hace muchos años pero no recordaba el orden exacto.. gracias :D


Título: Re: "bloquear" teclas
Publicado por: m@o_614 en 21 Marzo 2014, 18:50 pm
gracias por sus respuestas, creo que no es considerado buena práctica de programación usar la librería conio.h, me dijeron que también podía hacerlo con eventos de teclado, solo que no he encontrado mucha información de como hacer uno