Delphi/Lazarus: Convertir Variable Variant a Integer
Pregunta de Invitado | 29/11/2022 a las 17:38
Tengo un valor del tipo Variant, pero necesito el tipo Integer en mi programa para poder calcular con el valor.
En términos concretos, se trata de una función que requiere un número Integer. Tan pronto como paso el valor Variant a esta función, el compilador crea un mensaje de error.
¿Cómo es posible convertir o traducir un valor del tipo Variant en un valor del tipo Integer?
Temas Relacionados
Delphi/Lazarus: ¿Está presionada la tecla ALT, SHIFT o CTRL?
Tutorial | 0 Comentarios
Delphi/Lazarus: Convertir valor de Variant a String
Pregunta | 1 Respuesta
Lazarus: Entrada de Números binarios, hexadecimales y integers
Artículo | 0 Comentarios
Convertir muchos Archivos CSV a Hojas de Cálculo XLSX u ODS
Tutorial | 0 Comentarios
Delphi/Lazarus: Seleccionar todo con CTRL+A en ListView
Consejo | 0 Comentarios
JavaScript: Prueba si Variable JavaScript está definida
Consejo | 0 Comentarios
Lazarus: Cargar Archivo como Array de Bytes y Guardar Array de Bytes como Archivo
Tutorial | 0 Comentarios
Aviso Importante
Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.
Participar
Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.
La forma más fácil es definir una variable Integer y establecer esta variable al valor de la variable Variant:
Esto es incluso posible en el caso de que el valor Variant realmente es del tipo String (cadena).
Si de todos modos desea verificar el tipo antes, puede usar la función VarType para eso:
VarType devuelve el tipo del variable Variant. Tenga en cuenta: Hay también otros tipos de números en lugar de Integers, por lo que también puede verificar "if (VarType(v) in [varinteger, varsmallint, varshortint, varbyte, varsingle, vardouble, varword, varlongword, varint64, varqword]) then begin..." u otra lista de tipos para asegurarse de que no se pierda ningún tipo de número.
30/11/2022 a las 10:23
Quizás mi manera es un poco inconveniente, pero debería cubrir todos los casos posibles (por ejemplo, el caso de que el tipo de Variant no es un Integer).
En este código, primero, convertimos la variable Variant en una String usando VarToStr, luego, eliminamos el whitespace (espacios, saltops de línea y así sucesivamente) de la String usando la función Trim y después de eso usamos StrToIntDef para intentar convertir el String en un Integer.
El segundo parámetro de StrToIntDef (aquí 0) es el valor predeterminado. Este valor se devuelve si no es posible convertir la cadena (string) pasada en un entero (integer).
01/12/2022 a las 17:03