PROBLEMA: Converter MBF IEEE no Visual Basic para Windows

Traduções de Artigos Traduções de Artigos
Artigo: 140520 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Ficheiros de dados criados com produtos da Microsoft Basic mais antigos (rápida Basic GW-Basic e Basica (Compaq e IBM licenciada Basic)) poderá não ser legível pelo Visual Basic para o Windows.

Causa

Anterior para o IEEE flutuante ponto padrão ser aceite, a Microsoft utilizou um ponto de formato flutuante interno conhecido como Microsoft binário formato (MBF). A norma IEEE foi introduzida mais tarde e tornou-se a indústria padrão.

Versões anteriores do Microsoft QuickBASIC e GW-Basic suportada apenas formato MBF. No Visual Basic for MS-DOS e Microsoft Basic Professional Development sistema (PDS), funções estão disponíveis para conversão entre MBF e IEEE formatos. No entanto, tal como Microsoft movido para aceitação completa da norma IEEE, suporta para o formato MBF foi removido.

Visual Basic para o Windows utiliza a norma IEEE. O formato MBF, no entanto, é incompatível com a norma IEEE e dados guardados desta forma não será legíveis.

Resolução

O PDS e Visual Basic for MS-DOS produtos contidos funções converter entre o formato MBF e IEEE formato. Estas funções não estão disponíveis no Visual Basic para Windows. Seguem-se duas soluções possíveis para este dilemma:
  1. Um programa pode ser escrito no PDS ou Visual Basic para MS-DOS recria o ficheiro que contém os dados MBF. Depois de ler as informações do ficheiro para o PDS ou Visual Basic para MS-DOS, pode utilizar as funções de $ MKxMBF (consulte os manuais do PDS ou Visual Basic para MS-DOS ou os respectivos ajuda menus) para converter os dados para o formato IEEE. Este método é preferido por dois motivos:
    • Converte os dados para IEEE para que outros programas possam aceder os ficheiros.
    • Se utilizar o método 2, o programa terá uma DLL adicional que terá de distribuir com a aplicação.
  2. Anteriormente, não ocorreu nenhuma forma de converter os dados a partir do Visual Basic para o Windows. Mas agora é uma DLL disponível para o fazer. Esta DLL (MBF2IEEE.DLL) contém funções simular as funções MKS, MKD, CVS e CVD que estavam presentes em alguns dos produtos base baseados no MS DOS. Estas funções (MKS, MKD, CVS e CVD) não existem no Visual Basic para Windows, assim a necessidade desta DLL. A secção mais informação abaixo fornece detalhes sobre a DLL e explica como transferi-lo a partir do Centro de transferências da Microsoft.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Detalhes sobre o método 2: Utilizar Mbf2ieee.dll

NOTA: Estas funções tudo efectuar conversões entre MBF (Microsoft binário Formatar) e IEEE valores de ponto flutuante. Alguns dos mais recentes produtos em básicos baseados no MS DOS tinham versões destas funções que funcionava de forma diferente. Por exemplo, permitem consultar um número de IEEE como uma cadeia sem convertê-la para MBF. As rotinas descritas aqui apenas são fornecidas como uma forma de obter dados MBF antigos.

Estas funções fornecem conversões entre IEEE valores de ponto flutuante e flutuante MBF (Microsoft binário Format) do ponto de valores. Abaixo é um conjunto de declarar instruções que devem ser incluídas num programa Visual Basic que chama estas funções:
   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
				

Abaixo é uma descrição de cada uma destas funções juntamente com um exemplo.

CVS e CVD funções

Estas funções aceitar um 4 bytes (CVS) ou 8 bytes (CVD) cadeia como um argumento. Esperam o padrão de bits desta cadeia para representar uma precisão simples ou dupla MBF valor, respectivamente. O resultado da função devolve um IEEE.
   Dim MBF As String, IEEE As Single
   ' load the string from a file, etc.
   IEEE = CVS(MBF)
				

Funções MKD e MKS

Estas funções aceitam um único de IEEE (MKS) ou duplo (MKD) valor de precisão como um argumento. Em seguida, converte este valor num valor MBF byte 4 ou 8 bytes e devolve-a numa cadeia.
   Dim MBF AS String, IEEE As Single
   MBF = MKS(IEEE)
   ' Now write the MBF value out to disk
				

Problemas potenciais

Existem diferenças entre o formato de IEEE e MBF. Por este motivo precisão poderão ser perdida durante as traduções. Também é possível que um número não pode ser convertido entre os dois formatos. Se for este o caso, uma sobrecarga de Visual Basic (erro # 6) é gerada. Este é um erro detectável, para gerir o erro em conformidade.

Como obter Mbf2ieee.dll

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
Mbf2ieee.exe
Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591Como obter ficheiros de suporte da Microsoft a partir de serviços on-line
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro. Depois de transferir Mbf2ieee.exe, executá-la para obter Mbf2ieee.dll juntamente com os ficheiros de origem e um ficheiro Mbf2ieee.txt, que é um documento que contém o texto deste artigo.

Código de origem incluído Mbf2ieee.exe

Em conjunto com a .dll próprio, o código de origem é também fornecido, para que possa efectuar modificações e recompilar se tiver o Microsoft C. Para recompilar e criar um novo ficheiro .dll, tem de utilizar Microsoft C porque as rotinas são específicas do Microsoft C e dependem da forma que Microsoft C devolve valores de ponto flutuante. Este código de origem não compilar com Borland C.

Para recompilar com Microsoft C, utilize as seguintes instruções de linha de comandos para criar a 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
				

Propriedades

Artigo: 140520 - Última revisão: 2 de fevereiro de 2014 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbdownload kb16bitonly kbfile kbprb kbsample KB140520 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 140520

Submeter comentários

 

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