"bloquear" teclas

Iniciado por m@o_614, 21 Marzo 2014, 01:58 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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???

rulovive

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

engel lex

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 (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>
#define UP_ARROW 224
using namespace std;

int main() {
     int cInput = getch();
     if(cInput==UP_ARROW){cout << "fin" << endl;}
     cin.get();
return 0;
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

rulovive

Cita de: engelx 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 (cpp) [Seleccionar]
#include <iostream>
#include <conio.h>
#define UP_ARROW 224
using namespace std;

int main() {
     int cInput = getch();
     if(cInput==UP_ARROW){cout << "fin" << endl;}
     cin.get();
return 0;
}


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

m@o_614

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