Entrar

PROBLEMA: Converter MBF em IEEE no Visual Basic para Windows

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.

140520
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
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:
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				
QBASIC BASCOM GWBASIC BASICA 4.00 S14706 Mbf2ieee

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 140520 - Última Revisão: 09/27/2013 22:07:04 - Revisão: 2.2

  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 de 16 bits Enterprise Edition
  • kbnosurvey kbarchive kbmt kbdownload kb16bitonly kbfile kbprb kbsample KB140520 KbMtpt
Comentários