PROBLEMA: Converter MBF em IEEE no Visual Basic para Windows

Traduções deste artigo Traduções deste artigo
ID do artigo: 140520 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Arquivos de dados criados com produtos da Microsoft Basic mais antigos (Basic rápida, GW-Basic e Basica (IBM e Compaq licenciada Basic)) não pode ser lido pelo Visual Basic para Windows.

Causa

Antes para o IEEE flutuante ponto sendo padrão amplamente aceito, a Microsoft usou um formato de ponto flutuante interno conhecido como Microsoft binário Format (MBF). O padrão IEEE foi introduzido posteriormente e se tornou o setor padrão.

Início as versões do Microsoft QuickBASIC e GW-Basic suporte apenas MBF formato. No Visual Basic for MS-DOS e Microsoft Basic Professional desenvolvimento sistema (PDS), funções estão disponíveis para converter entre MBF e IEEE formatos. Como o Microsoft movido na direção de aceitação concluída do padrão IEEE, entretanto, oferecem suporte para o formato MBF foi removido.

Visual Basic para Windows usa o padrão IEEE. O formato MBF, no entanto, é incompatível com o padrão IEEE e dados salvos dessa maneira não será legíveis.

Resolução

O PDS e do Visual Basic for MS-DOS produtos contidos funções converter entre formato MBF e formato IEEE. Essas funções não estão disponíveis no Visual Basic para Windows. Aqui estão duas soluções possíveis para esse dilema:
  1. Um programa pode ser gravado em PDS ou no Visual Basic para MS-DOS recria o arquivo contendo dados MBF. Após ler as informações do arquivo em Visual Basic ou PDS para MS-DOS, você pode usar as funções de $ MKxMBF (consulte os manuais para PDS ou o Visual Basic para MS-DOS ou sua ajuda menus) para converter os dados em formato IEEE. Esse método é preferido por dois motivos:
    • Ela converte seus dados para IEEE para que outros programas possam acessar seus arquivos.
    • Se você usar o método 2, o programa será necessário uma DLL extra que você deve distribuir com o seu aplicativo.
  2. Anteriormente, não havia nenhuma forma para converter os dados do Visual Basic para Windows. Mas agora há uma DLL disponível para fazer isso. Essa DLL (MBF2IEEE.DLL) contém funções que simulam as funções MKS, MKD, CVS e CVD que estavam presentes em alguns dos produtos básicos Microsoft MS-DOS baseados em. Essas funções (MKS, MKD, CVS e CVD) não existem no Visual Basic para Windows, assim, a necessidade dessa DLL. A seção mais informações abaixo fornece detalhes sobre a DLL e explica como baixá-lo do Centro de download da Microsoft.

Situação

Esse comportamento é por design.

Mais Informações

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

Observação: Todas as seguintes funções fazer conversões entre o formato binário do Microsoft (MBF) e IEEE valores de ponto flutuante. Alguns dos mais recentes Microsoft MS-DOS baseados em Basic produtos tinham versões dessas funções que trabalharam diferente. Por exemplo, eles permitem examinar um número de IEEE como uma seqüência de caracteres sem convertê-lo para MBF. As rotinas descritas aqui somente são fornecidas como uma maneira de recuperar dados MBF antigos.

Essas funções fornecem conversões entre IEEE valores de ponto flutuante e flutuante do formato binário do Microsoft (MBF) valores de ponto. Abaixo é um conjunto de instruções que devem ser incluídas em um programa Basic Visual que chama essas funções de declarar:
   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 dessas funções juntamente com um exemplo.

CVS e CVD funções

Essas funções aceitar um 4 bytes (CVS) ou 8 bytes (CVD) seqüência como um argumento. Eles esperam que o padrão de bits dessa seqüência de caracteres para representar uma precisão simples ou dupla MBF valor, respectivamente. O resultado da função retorna um IEEE.
   Dim MBF As String, IEEE As Single
   ' load the string from a file, etc.
   IEEE = CVS(MBF)
				

MKS e MKD funções

Essas funções aceitar um único IEEE (MKS) ou clique duas vezes (MKD) valor de precisão como um argumento. Em seguida, ele converte esse valor em um valor MBF 4 bytes ou 8 bytes e o retorna em uma seqüência de caracteres.
   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 IEEE e MBF. Por esse motivo precisão pode ser perdido durante as conversões. Também é possível que um número não pode ser convertido entre os dois formatos. Se for esse o caso, um estouro do Visual Basic (Erro # 6) é gerado. Isso é um erro interceptável, então, manipular o erro adequadamente.

Como obter Mbf2ieee.dll

O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Mbf2ieee.exe
Para obter informações adicionais sobre como baixar arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591Como obter arquivos de suporte da Microsoft a partir de serviços online
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo. Depois de baixar Mbf2ieee.exe, executá-lo a obter Mbf2ieee.dll juntamente com os arquivos de origem e um arquivo Mbf2ieee.txt, que é um arquivo Leiame que contém o texto deste artigo.

Código-fonte incluído no Mbf2ieee.exe

Além .dll propriamente dito, o código-fonte é também fornecido, para que poder fazer modificações e recompilar se você tiver Microsoft C. Para recompilar e criar um novo arquivo .dll, você deve usar Microsoft C porque as rotinas são específicas para Microsoft C e dependem da maneira que Microsoft C retorna valores de ponto flutuante. Este código-fonte não compila com a Borland C.

Recompilar com Microsoft C, use as instruções de linha de comando a seguir 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

ID do artigo: 140520 - Última revisão: sexta-feira, 27 de setembro de 2013 - 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 de 16 bits 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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