Saber si es un numero
Como hace uno para saber si lo que estoy leyendo de un dbstringgrid es un numero o una letra?
Gracias |
La verdad es que no conozco el TDBStringGrid, pero Con un TEdit se puede hacer asi:
Si adecuas este ejemplo a lo que necesitas seguramente te sera útil. ;) |
No tengo delphi a mano ahorita pero tambien esta la funcion IsNumeric que devuelve true si es un numero
|
No se si me equivoco, pero tengo entendido que IsNumeric solo recibe como parámetro un Char, de manera que solo servirá para comprobar los números del 0 al 9.
|
Por eso decia que no tenia delphi a mano de hecho lo escribi de memoria, es mas despues que postee me puse a pensar si no sera de otro lenguaje :confused:
|
Pero siempre podremos hacer nuestra función personalizada :D.
Para usarla es:
Nota: IsNumeric pertenece a la unidad IdGlobal.Pas |
Un pequeño ajuste a esa función ya que si le envían '' me diría que es Numérico y si envían un numero negativo diría que es alfanumerico:
Seguro que esa función debe tener errores aun, pues no tiene en cuenta los flotantes o si le envian algo como -1222-566 tambien presentaria problemas, pero alli se las dejo por si alguien quiere refinarla. |
Buena esa jhonny :)
yo añadiria
|
No la he probado pero esto deberia funcionar
|
:D, Bueno, pero entonces el problema ahora sería porque el siguiente tampoco es un numero y dicha función dirá que si:
9999- Este tipo de cosas son realmente curiosas :D. |
Ahora el siguiente tendría problema también:
999-999 Caracoles, cada vez le encuentro mas problemas, creo que tendré que ponerme a buscar soluciones :). |
Cita:
Ahora solo falta saber si le sirvio la respuesta a nomad para pasarle la factura jejeje |
Jejeje, no he probado tu solución aun pero me imagino que con el siguiente dirá que es numero
9999. //Nunca he visto un numero con ese punto al final :D |
Que tal asi?, la probé y funciono, con las condiciones que hemos nombrado hasta aquí:
|
Cita:
|
Aja mas problemas a ver a ver
|
Cita:
"999 " (Con espacio al final, por ejemplo). Esa función dirá que es alfanumérico. Pero la siguiente no.
|
Ok jhonny hoy tengo el cerebro en off por mas qe trato le busco problemas y no se me ocurre ni uno jejeje
creo que me gusta mas pensar en soluciones que en problemas |
Cita:
|
Con un Autómata Así se llamaría, si no me equivoco...... funciona en todos los casos. |
He estado observando todos los post, pero me parece que nos estamos liando.
Según lo que comenta incialmente Nomad Cita:
Creo que la respuesta debería ser mas simple. Aqui les dejo el código, probado con las diferentes posibilidades.
Salud OS. |
No se si son manias o es que lo lei pero el asunto es que no me gusta crear excepciones que pueden ser evitadas.
jejej ademas si no nos hubieramos liado asi luego en que entretenernos |
Cita:
En fin, cada perro tiene su método para matar pulgas.:D:D Salud OS. |
Hay diosssss, a veces me parece que debí dejar todo en el primer post que escribí (Que por cierto es muy parecido al codigo que acaba de escribir egostar). :D, pero otra veces me doy cuenta de que me he divertido con este hilo :p .
|
He estado siguiendo a este hilo y la verdad es que como que le dieron demasiada rosca al asunto:D.
Cita:
Ahora, para encabronar, y seguir dandole rosca... ¿alguno no pensó el emplear la antigua función val()? Con esto simplemente podríamos hacer algo así (que también es rebuscado ya que por esas dos líneas directamente conviene meterle un IF) :
Saludos, |
Delphius, Pues efectivamente dice que 13.5 es Alfanumérico :( :D
|
Cita:
Cita:
Sinceramente es pasion por ver sufrir al projimo :P Ok val sirve para los enteros, ¿¿y los reales?? que son los que le dieron vuelta al asunto |
Cita:
|
Cita:
Fui a la ayuda y me di con esto: Cita:
Saludos, |
Upps :o que de cosas, yo lei lo mismo pero no se en que estaba pensando y en vez de real lo modifique por double, bueno es sabado las 4 de la tarde y en lo noche me toca viajar debe ser eso que me tiene la cabeza en otra parte
|
Ya decia yo que alguien iba a venir he íbamos a tener que tirar todo a la basura :D, el único "problema" que veo es que parece que obliga a que se use como Separador decimal el Punto(.), de manera pues que si alguien esta acostumbrado a usar la coma (,) tendrá que cambiar de costumbres, ahh y volvió otro problema que ya habíamos evaluado, que el 999. (Con ese punto al final) no es valido :).
Jejeje, parece que estuviéramos volviendo a lo mismo :D. |
Bueno, fue muy divertido este asunto y gracias a Delphius por fin se pudo sacar una función muy bonita, asi pues que propongo finalmente este otro ajustecito y listo :D...
|
Cita:
:D:D, Si prueban con mi código, ya tiene contemplado los números que mencionas amigo jhonny. Lo de las comas, :rolleyes:, se resuelve con la funcion:
:D:D Salud OS. |
Cita:
Mi función en ese caso es:
:D :D :D |
Jajajajajajaja pues si definitivamente el amigo jhonny tiene una obsesion secreta con el 999. que realmente si es un numero, valdria decir
999 = 999. = 999.0 Pues yo ya llegue de la oficina a la casa pero no se preocupen aqui tengo tambien una oficina y hecha por mis propias manos vamos que hasta presentable me ha quedado, aunque sigo esperando que no se caiga, y el arquitecto y que si bases que si pilares que si cabilla, nah cemento y bloque jejeje |
Pues me he quedado un poco "picado", y se me ocurrió lo siguiente:
Saludos, |
Cita:
muy buena tu funcion mañana la pruebo y veo que tal, por los momentos que pasaria con 999,999.99 o el dilema de jhonny de 99. |
por que no pruebas con las funciones TryStrToInt o TryStrToFloat? ambas devuelven true si es posible convertir str en un numero entero o flotante
|
Cita:
Parece que todo quedo reducido en esa función, incluso tiene en cuenta el 999. :D Lo que me produce un "no se que" que no se describir, es que en http://www.clubdelphi.com/foros/show...1772#post71772 ya había algo :D. Que curioso... ¡¡¡Buena esa courtois!!! |
Pues el compañero nomad ya tiene opciones para decidir, pero, a todo esto, donde estará que no ha dicho ni pio.
Bajo estas circunstancias me viene a la mente esto que escribió nuestro amigo jhonny.... Cita:
Salud OS. |
La franja horaria es GMT +2. Ahora son las 15:35:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi