FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Saber si una Variable tipo Tdatetime o Integer tiene Valor o esta vacia
Buenas noches, tengo una duda y es como verificar si una variable tipo TdateTime o Integer esta vacia o nula para hacer clausualas condicionales
|
#2
|
||||
|
||||
De primeras, no se puede, porque los tipos primitivos no son "nullables". Alguna de las formas de solucionarlo es usar "valores bandera", es decir, definir un valor en tus reglas de negocio que se asuma como "invalido".
Por ej:
La implementacion de los metodos es trivial (comparas el valor que recibes contra la constante) Una solucion mejor es el uso de una biblioteca que soporte los llamados tipos "nullables" Spring4D ofrece una solucion muy buena, es OpenSource y es compatible con Delphi 2010 o superior. Los nullable se definen en la unidad Spring.pas
El uso con cualquier tipo (gracias a los genericos y a TNullable<T> es posible) y la sobrecarga de operadores (sobre todo el implicito) lo hace muy limpio En realidad, TNullable<T> es un record que se aprovecha de como estan implementados en Delphi para setear un Flag de "HasValue = True/False" dependiendo de como fue instanciada la variable Por ej:
La unica "pega" es que no podes usar (directamente) los ayudantes como TStringHelper sobre una variable de tipo Nullable: por mas que tengas el operador implicito, te obliga a escribir ".Value"
Si no recuerdo mal en los proximos releases de Delphi estos "nullables" van a estar implementados de manera nativa y no hara falta usar bibliotecas externas |
#3
|
|||
|
|||
uso delphi xe8 acabo de adquirir berlin 10
|
#4
|
||||
|
||||
No entendi muy bien
Que yo sepa en Berlin no hay Nullables. Creo que esto es para la version que viene despues de Berlin Por otra parte, en esas versiones de Delphi podes usar Spring4D como te comentaba Por si alguno le interesa, esta es una lectura interesante sobre Nullable en Delphi, por Allen Bauer. Spring hace algo similar, solo que mas sencillo, ya que en lugar de una interface como "sentinela", usa un string, que el compilador siempre inicializa a un valor conocido: EmptyStr, es decir, el string vacio Edito: Aca se menciona los nullables en Delphi nativo. La mala noticia: hay que esperar hasta Delphi 10.3, en el 2018. Apenas va 1 mes del año y ya hay que pensar en el proximo Última edición por AgustinOrtu fecha: 29-01-2017 a las 06:54:43. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿BCB6 Como Cambiar valor Variable que esta en otra unit? | JXJ | C++ Builder | 3 | 03-10-2013 01:17:36 |
Traer un valor de un campo de la Tabla (Access) incluso si esta vacia | nefore | Conexión con bases de datos | 4 | 16-06-2013 22:45:58 |
No se puede convertir variable de tipo null a tipo integer. | JairoC | Varios | 5 | 30-11-2011 15:43:11 |
Saber si la Variable tiene letras | cmgenny | Varios | 1 | 11-05-2004 08:00:59 |
Saber el valor de una variable (Preport,fastreport) | IVAND | Impresión | 0 | 06-02-2004 00:55:22 |
|