elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  manera de operar con funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: manera de operar con funciones  (Leído 1,401 veces)
fraktal

Desconectado Desconectado

Mensajes: 128


Ver Perfil
manera de operar con funciones
« en: 16 Septiembre 2006, 21:09 pm »

Hola, aber, resulta que estoy haciendo unas pruebas y me encuentro con un problema. Yo vengo de programar en Visual Lisp. Ahi, se puede operar de una manera tal, que para yo puedo agrupar muchas funciones y obtener un solo resultado. Pongamos por caso que yo quiero en Visual Lisp decir que si una tecla es pulsada en minuscula, me de el resultado en mayuscula. Yo lo haria asi:
(setq letra (strcase (chr 97)))
esto en VL se ejecuta por parentesis de dentro hacia fuera. El 97 representa la letra a pulsada en este caso, entonces primero transformaria ese codigo ascii en letra, y despues con strcase la pone en mayuscula, y lo guarda en la variable Letra. Con lo cual ese es el resultado final "A" y he agrupado dos funciones Strace y Chr para obtener la "A" viniendo de "a".
Bien, ahora me planteo que estoy en visual basic. Creo un textbox. Y mi objetivo que cuando se escriba sobre el, transforme esa letra automaticamente en mayuscula, mediante el evento Keydown. Bien, empleando la tecinca de visual lisp puse esto:
Text9.Text = UCase(Chr(KeyCode))
pensando que se procesiarai primero el chr (keycode)
y transformaria el codigo ascii que recibe de la letra a caracter, y luego lo pasaria por el Ucase que lo pone en mayuscula, pero a la hora d ejecutar el programa, escribo y me devuelve la letra que he pulsado en minuscula y mayuscula, con lo cual deduzco que lo que pasa es que da como resultado las dos funciones que he empleado, una me devuelve la letra pulsada osea que chr (keycode) y luego el Ucase. De manera que como haria yo, o cual es la forma mas rapida y practica de hacer esto. Entiendo que podria crear una variable, ejecutar primero el chr guardarlo en la variable y volver a ejecutar el ucase para que lo vuelva a guardar en la variable no? pero no kreo que sea la forma mas rapida. No se... alguien me ayuda? y sobre todo que me digan cual es la forma de agrupar varias funciones para que obtenga un resultado, si es posible. Gracias y saludos.



En línea

soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: manera de operar con funciones
« Respuesta #1 en: 17 Septiembre 2006, 01:19 am »

Hola
Si pruebas a pulsar la tecla 'a' en un textbox verás que en el evento keydown se guarda en la variable keycode el valor 67 que se corresponde con A, en cambio en el evento keypress se guarda en la variable keyascii el valor 'a' que es el que pulsaste.

Esto es porque keydown y keyup miran que tecla física se ha pulsado mientras que keypress miran que caracter has pulsado y no es lo mismo. Por eso en keypress no puedes controlar las teclas F!...F12, los control, los shift, los alt, ... porque no tienen correspondencia con ningún caracter.

Citar
Pongamos por caso que yo quiero en Visual Lisp decir que si una tecla es pulsada en minuscula, me de el resultado en mayuscula. Yo lo haria asi:
(setq letra (strcase (chr 97)))
pues aquí haces
Código:
sub keypress(keyascii as integer)
keyascii=asc(ucase(chr(keyascii)))
end sub

Esto hace lo siguiente
en keyascii hay un código ascii.
Con chr(keyascii) obtengo el caractar correspondiente ('a')
con ucase('a') obtengo ese caracter en mayúsculas ('A')
con asc('A') obtengo el código ascii de lo obtenido (65)
así que cuando entré keyascii era 97 ('a') y al salir es 65 ('A')

Un saludo


En línea

Callar es asentir ¡No te dejes llevar!
fraktal

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: manera de operar con funciones
« Respuesta #2 en: 17 Septiembre 2006, 18:35 pm »

OK, gracias Soplo, ya lo he entendido. Me ha costado pq yo hacia lo que tu decias y luego añadia
text1.text = keyascii y me seguia dando el mismo problema. El asunto es que aun sin entender pq, no ahi que ponerle al texto del la caja el keyascii pq ahi es cuando lo repite. Digo que no entiendo pq, pues y Keyascii tiene un valor en el momento de transformalo a mayuscula, y yo añado ese valor al text1.text deberia la propiedad text tomar ese valor, osea una letra, no se pq lo repite y me pone el kodigo ascii y la tecla ya transformada. Entonces bueno entiendo que cuando simplemente por pulsar la tecla, saltar el procedimiento, como el Keyascii se pasa como argumento al procedimiento, este se modifica y ya esta... tiene es que ver con lo de pasar un argumento por referencia y por valor? Hasta el momento he leido sobre ello, pero todavia no me he encontrado con un caso practico. Gracias y saludos.
En línea

soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: manera de operar con funciones
« Respuesta #3 en: 17 Septiembre 2006, 19:30 pm »

Hola
Citar
luego añadia
text1.text = keyascii y me seguia dando el mismo problema. El asunto es que aun sin entender pq, no ahi que ponerle al texto del la caja el keyascii pq ahi es cuando lo repite.
Cuando profundices mas verás que puedes construir clases. Una clase es un conjunto de código que puede hacer muchas cosas (entre ellas un objeto) y definir sus propiedades y eventos.

Cuando tu inicias vb te vienen hechas unas clases (la clase form, la clase textbox, la clase label, ...) que tienen ya unas propiedades intrínsecas.

De esta forma tu puedes hacer tu propia clase y crear tus propios objetos con las propiedades y comportamiento que tu quieras, si usas un objeto de una clase ya existente este tendrá sus propiedades y tu tendras que aceptarlas o no usarlo.

El objeto textbox tiene varios eventos programados. Uno de ellos es el keypress que recoge el valor ascii de la tecla pulsada y lo agrega al resultado. Por eso tu no tienes que hacer text1=keyascii, porque ya lo hace él. Tu solo tienes que validar el código (o transformarlo) sabiendo que cuando salga será agregado (a menos que keyascii sea 0).

El control textbox funciona así y así tendrás que aceptarlo. Si quieres cambiarlo eres libre de hacer otra clase con otras propiedades y eventos que se comporten de distinta forma.

Un saludo
En línea

Callar es asentir ¡No te dejes llevar!
fraktal

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: manera de operar con funciones
« Respuesta #4 en: 18 Septiembre 2006, 01:52 am »

Gracias, ya entiendo mejor. Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arrestan a 10 responsables de construir y operar una peligrosa “Mariposa”
Noticias
Graphixx 0 2,127 Último mensaje 17 Diciembre 2012, 02:39 am
por Graphixx
Es oficial, Uber no podrá operar en el Estado de México
Noticias
wolfbcn 1 1,296 Último mensaje 29 Mayo 2015, 02:38 am
por scott_
Leer y operar bisección con una función
Programación C/C++
Antoniio 9 2,771 Último mensaje 9 Septiembre 2015, 15:41 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines