![]() |
Saber si un texto es un número
Existe alguna función para saber si un texto represanta algún número sin tener que recurrir al control de excepciones?
ej: Código:
var |
perdón... en el ejemplo anterior supongan que a la variable número le doy un valor (que no sea un número) antes de la función "isNaN". Ya sé que no estaba inicializada en el ejemplo
|
Hola
Este es parte de un ejemplo que puso Bicho en algun hilo. En El evento OnKeyPress del edit o dbedit pon: Con esto si hay algun numero lo indica Hay que buscar para encontrar:D Saludos |
Podemos hacer algo así:
|
buenas, yo utilizaria un bloque try... except
saludos!:) |
Hola
Ya que estas por aqui seoane, quisiera que me evacuaras una consulta con respecto al codigo que pusiste. Al usar variables, no estoy utilizando memoria adicional? El uso de variables es mejor limitarlo o por el contrario un bite o mas no son gran desplome ? Perdona que te haga esta pregunta en este hilo, pero se dio la ocasion. Saludos Maestro |
:confused: Lo siento Caral, pero no te entiendo muy bien. A que te refieres con "usar variables". Y cuando dices que usa mas memoria, ¿con resecto a que otro metodo?.
|
Gracias Seoane
Dicen que la pregunta mas tonta es la que no se hace Al Hacer esto: No Estas utilizando una Variable de tipo string?( Cadena de caracteres), que a su vez ocupa bytes de memoria?, puesto que el sistema tiene que almacenar (Guardar o Guardar espacio) para esta variable para definir posteriormente, (Fraccion de segundos) su valor? La verdad seoane es simple curiosidad y tratar de aprender algo mas. Saludos |
Ahora creo que ya se por donde vas, donde yo pongo:
preguntas por que no uso:
Lo hago por seguir el ejemplo que puso elcigarra:
Con respecto a tu pregunta, la diferencia entre una y otra cosa es insignificante. Estamos hablando de microsegundos. |
Gracias
La verdad esto es lo que me gusta de este club y sus foros que una pregunta o una duda se puede convertir en un debate y creo que de eso se trata espero que con ampliar estas posibilidades elcigarra y otros muchos tengan mas criterio y enfonquen sus dudas con mas amplitud. Repito Gracias por tu explicacion he insisto, Maestro. Saludos |
Cita:
// Saludos |
Cita:
// Saludos |
Cita:
|
Los pchar son a los string lo que los palillos chinos al tenedor. Se pueden hacer maravillas con los primeros pero es mucho, mucho más cómodo usar los segundos.
:D // Saludos |
Denuevo:
La pregunta existencial.:D Si nuestro amigo elcigarra pregunta a mi entender: Cita:
Cita:
Cita:
Puesto que si por limpieza y rapidez de codigo se trata, esto es rapido seguro.:D Maestros por favor me critican asi aprendo.:D Saludos |
Son dos cosas distintas. Lo que tú propones sirve para permitir que se tecleen sólamente dígitos dentro de algún control. Pero en la pregunta original no se menciona ningún control en particular; el dato puede provenir de otro tipo de fuentes, por ejemplo, de un archivo de texto.
// Saludos |
En tu caso estás comprobando que un caracter 'X' se encuentre en el rango dado...
Y lo que necesita elcigarra es comprobar si un string dado representa a un número. Así que no aplicaría... ;) Saludos... Actualización: Que me han ganado... :p |
Caral, no te preocupes por "gastar memoria" tan pronto.
Usar variables es el metodo recomendado para la mayoria de los casos, y ten en cuenta que los compiladores se optimizan para los casos "genericos". Cuando alguien hace algo no "generico" el compilador (ejem... los arquitectos del compilador) lo que hace es decir: ok, se supone que el tio es mas listo que yo. Y la gran mayoria de los casos, no lo son. Ademas en Delphi Nativo (Win32/Win64) los tipos de datos string son mutables y son punteros, lo que implica que son muuuy eficientes. De hecho, pascal tiene el mejor tipo de datos string, a la hora de balancear asuntos. Otro caso es sobre .NET y otros lenguajes, que tienen datos inmutables, o sea, cada referencia es una copia de la anterior, no un puntero. Y aun asi, es negible el efecto. Las mejores optimizaciones se logran: - Haciendo codigo claro, que siga las convenciones, y que trabaje de forma "normal" sin pretender ser muy listo antes de serlo de verdad. - Reducir la cantidad de codigo, la cantidad de funciones, etc... Simple es mejor que complejo. - El 80% de los problemas esta en el 20% del codigo. El codigo mas repetitivo es el que *vale* la pena chequear para optimizar y refactorizar. - Antes de optimizar, usa un profiler. La mayoria de los programadores aprendemos tecnicas de optimizaciones (como pasar un for a un while) que son innecesarias en compiladores modernos, o que no corresponden a la arquitectura (ej: Aplicar optimizaciones Win32 a .NET). Solo al usar profilers sabras que es lento. - La velocidad perceptual es mas importante que la de maquina. Un software que le parezca al usuario mas lento es peor que uno que lo sea tecnicamente mas rapido. La optimizacion se logra haciendo un buen codigo visual... Una vez *tu* seas eficiente en desarrollar, preocupate por que lo sea tu software, porque sino terminaras haciendo un trabajo innecesario. |
Gracias maestros, a todos , puesto que si no se hacen preguntas, ahunque sean tontas, no se aprenderia.
Pd. elcirrara: No sirve mi opcion Reconozco mi error y les doy las gracias por su enseñanza y paciencia, que en los tres meses que llevo programando he aprendido mucho con vosotros. Saludos |
Por otro lado Caral aunque estés usando un TEdit para introducir el numero, y utilizaras el evento OnKeypress para filtrar los números, eso no nos asegura que el resultado pueda ser convertido a un numero. Por ejemplo, el numero 5000000000 pasaría tu filtro, pero no se puede convertir en integer. Por eso siempre es recomendable hacer la comprobación, mas vale 10 comprobaciónes de mas que una de menos :)
|
La franja horaria es GMT +2. Ahora son las 04:18:15. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi