Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

viernes, 13 de abril de 2012

VB6 Code Snippet: Colocar el cero delante luego de convertir de Double a String

Quería convertir varios valores decimales, guardados en variables tipo Double ó Single, a cadenas de caracteres usando la función Str$ (el "$" le indica que devuelva un String, no un Variant). Pero sucedía que al querer convertir valores entre cero y uno, me eliminaba el cero a la izquierda del punto decimal. Por ejemplo, si convertía 0.12, obtenía ".12" en lugar de "0.12".

La manera de arreglarlo es evaluar el primer caracter de la cadena de caracteres resultante de la conversión, si es un punto se le añade un cero a la izquierda:

Dim miString as String
Dim miNum as Double

...  coding coding coding...

miString = Str$(miNum)
If AscB(Trim$(miString)) = 46 Then miString = "0" & Trim$(miString)

El código Ascii del punto es 46. Utilizo la función AscB porque es más rápida que Asc (AscB devuelve los bits del primer caracter, Asc además los convierte a Ansi). Uso la función Trim$ para eliminar cualquier espacio en blanco al inicio y al final de miString.

Trim devuelve un Variant. Trim$ devuelve un String.

Más información sobre optimización en el uso de Strings en Visual basic 6 aquí.