miércoles, 16 de abril de 2008

Mejorar el IsNumeric. Usa TryParse

Estoy metido en un proyecto en donde tengo una serie de controles que tiene que ser validados y que ahora mismo fallan (no les dio tiempo de finiquitarlos a los responsables del desarrollo anteriores).

Me quede asombrado al comprobar que un textBox en donde se espera un identificador numérico para realizar una búsqueda, no se controlaba errores básicos como no introducir nada, introducir caracteres no numéricos o con un tamaño mayor que el que acepta la variable tipo Integer.

Dándole varias vueltas, que al final me han llevado a crear una clase para realizar las validaciones, mi primera intención fue utilizar la comparación

If IsNumeric(textBox.text) Then

Pero esto deja la puerta abierta a fallos motivados por el tamaño de la cadena de texto. Por lo cual he recuperado las anotaciones de la certificación y he utilizado la estructura de conversión TryParse.

If Int32.TryParse(textBox.text, resultado) = False Then

Su uso es muy sencillito, primero le digo a qué tipo quiero realizar la conversión. En este caso a Int32 (Integer). En segundo lugar le paso la cadena de texto que quiero convertir y a continuación utilizo una variable del mismo tipo al que quiero hacer la conversión para almacenar el resultado. Por último este método me devuelve un valor booleano que indica si ha sido posible la conversión.

Así, con esta función consigo controlar todos los fallos posibles que me pudieran producir un crash en la aplicación a causa de lo que el usuario pueda introducir en el textBox.

22/04/2008: He visto una entrada en el blog del O bruxo mobile que también recomienda el TryParse pero desde el punto de vista del rendimiento. El cual es, simplemente, barbaro.

Una lucha desigual 'Try vs TryParse'

No hay comentarios: