PRB: Convertir MBF en IEEE en Visual Basic para Windows

Seleccione idioma Seleccione idioma
Id. de artículo: 140520 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Los archivos de datos creados con productos de Microsoft Basic antiguos (rápido básica GW-Basic y Basica (IBM y Compaq licencia Basic)) puede no ser legible por Visual Basic para Windows.

Causa

Anterior a la flotante IEEE punto está estándar ampliamente aceptado, Microsoft ha utilizado un formato de punto flotante interno conocido como el formato binario de Microsoft (MBF). El estándar IEEE se incorporó más tarde y se convirtió en el sector estándar.

Las primeras versiones de Microsoft QuickBASIC y GW-Basic compatibles sólo el formato MBF. En el sistema de desarrollo de Professional básica de Microsoft (PDS) y Visual Basic para MS-DOS, las funciones están disponibles para convertir entre MBF y IEEE formatos. Sin embargo, como Microsoft movido hacia completa aceptación del estándar IEEE, compatible con para que se ha quitado el formato MBF.

Visual Basic para Windows utiliza el estándar IEEE. El formato MBF, sin embargo, es incompatible con el estándar IEEE y no se puede leer datos guardados en este modo.

Solución

El PDS y Visual Basic para MS-DOS productos incluyen funciones de conversión entre MBF formato y en formato IEEE. Estas funciones no están disponibles en Visual Basic para Windows. Aquí tiene dos soluciones posibles a este dilema:
  1. Se puede escribir un programa en PDS o Visual Basic para MS-DOS que vuelve a crear el archivo que contiene los datos MBF. Después de leer la información del archivo en el PDS o Visual Basic para MS-DOS, puede utilizar las funciones de $ MKxMBF (consulte los manuales de PDS o Visual Basic para MS-DOS o su ayuda menús) para convertir los datos en formato IEEE. Este método es preferido por dos motivos:
    • Convierte los datos en IEEE para que otros programas puedan tener acceso a los archivos.
    • Si utiliza el método 2, el sistema necesitará una DLL adicional que debe distribuir con la aplicación.
  2. Anteriormente, había forma de convertir los datos de Visual Basic para Windows. Pero ahora hay un archivo DLL disponible para ello. Esta DLL (MBF2IEEE.DLL) contiene funciones que simular las funciones MKS, MKD, CVS y CVD que estaban presentes en algunos de los productos básicos basada en MS-DOS. Estas funciones (MKS, MKD, CVS y CVD) no existen en Visual Basic para Windows, por tanto, la necesidad de este archivo DLL. La siguiente sección de más información, ofrece detalles sobre la DLL y explica cómo descargar desde el Centro de descarga de Microsoft.

Estado

Este comportamiento es por diseño.

Más información

Detalles sobre el segundo método: Utilizar Mbf2ieee.dll

Nota: Estas funciones todo realizan conversiones entre formato binario Microsoft (MBF) y los valores de punto flotante de IEEE. Algunos de los más recientes productos básicos-MS-DOS tenían versiones de estas funciones que funcionaban de forma diferente. Por ejemplo, le permiten examine un número de IEEE como una cadena sin convertirlos a MBF. Las rutinas que se describe aquí sólo se proporcionan como forma de recuperar los datos antiguos de MBF.

Estas funciones proporcionan las conversiones entre IEEE los valores de punto flotante y flotante en formato binario de Microsoft (MBF) valores de punto. A continuación es un conjunto de declarar las instrucciones que deben incluirse en un programa Visual Basic en la que llama a estas funciones:
   Public Declare Function Cvs Lib "MBF2IEEE.DLL" (X As String) As Single
   Public Declare Function Cvd Lib "MBF2IEEE.DLL" (X As String) As Double
   Public Declare Function Mks Lib "MBF2IEEE.DLL" (X As Single) As String
   Public Declare Function Mkd Lib "MBF2IEEE.DLL" (X As Double) As String
				

A continuación es una descripción de cada una de estas funciones junto con un ejemplo.

CVS y CVD funciones

Estas funciones aceptan una cadena de 8 bytes (CVD) de 4 bytes (CVS) o como un argumento. Esperan que el modelo de bits de esta cadena para representar una precisión de simples o doble valor MBF, respectivamente. Como resultado la función devuelve un IEEE.
   Dim MBF As String, IEEE As Single
   ' load the string from a file, etc.
   IEEE = CVS(MBF)
				

MKS y MKD funciones

Estas funciones aceptan un solo de IEEE (MKS) o doble (MKD) valor de precisión como argumento. A continuación, convierte este valor en un valor MBF 4 bytes u 8 bytes y lo devuelve en una cadena.
   Dim MBF AS String, IEEE As Single
   MBF = MKS(IEEE)
   ' Now write the MBF value out to disk
				

Posibles problemas

Existen diferencias entre el formato de IEEE y MBF. Por esta razón puede perderse la precisión durante las traducciones. También es posible que no se puede convertir un número entre los dos formatos. Si éste es el caso, un desbordamiento de Visual Basic (error # 6) se genera. Se trata de un error capturable, por lo tanto, controlar el error en consecuencia.

Cómo obtener Mbf2ieee.dll

El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft:
Mbf2ieee.exe
Para obtener información adicional acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591Cómo obtener Archivos de soporte técnico de Microsoft desde los servicios en línea
Microsoft exploró este archivo en busca de virus. con el software de detección de virus más reciente disponible en la fecha de publicación. Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados. Después de descargar Mbf2ieee.exe, ejecútelo para obtener Mbf2ieee.dll junto con los archivos de origen y un archivo Mbf2ieee.txt, que es un archivo Léame que contiene el texto de este artículo.

Código fuente incluido en Mbf2ieee.exe

Además el archivo .dll propio, el código fuente es también proporcionan, para poder realizar modificaciones y volver a compilar si tiene Microsoft C. Para volver a compilar y generar un nuevo archivo DLL, debe utilizar Microsoft C porque las rutinas son específicas de Microsoft C y se basan en la forma de que Microsoft C devuelve valores de punto flotante. Este código fuente no se compila con Borland C.

Para volver a compilar con Microsoft C, utilice las siguientes instrucciones de línea de comandos para generar la DLL:
    cl -ALw -Ow -W2 -Zp -Tp mbf2ieee.c
    link /nod c:\vb\cdk\vbapi.lib mbf2ieee, mbf2ieee.dll, NUL, sdllcew
       oldnames libw, mbf2ieee
    rc -t mbf2ieee.dll
    implib mbf2ieee.lib mbf2ieee.def
				

Propiedades

Id. de artículo: 140520 - Última revisión: martes, 04 de febrero de 2014 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbdownload kb16bitonly kbfile kbprb kbsample KB140520 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 140520

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com