PRB : Conversion MBF d'IEEE dans Visual Basic pour Windows

Traductions disponibles Traductions disponibles
Numéro d'article: 140520 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Fichiers de données créées avec les produits Microsoft Basic plus anciens (rapide base GW-Basic et Basica (IBM et Compaq Basic sous licence)) peuvent ne pas être lisibles par Visual Basic pour Windows.

Cause

Avant pour IEEE flottante point en cours standard largement accepté, Microsoft a utilisé un format de point flottant interne appelé Microsoft binaire format (MBF). La norme IEEE a été introduite une version ultérieure et est devenu l'industrie standard.

Les versions antérieures de Microsoft QuickBASIC et GW-Basic pris en charge uniquement MBF format. Dans Microsoft base Professionnel développement système (PDS) et Visual Basic pour MS-DOS, les fonctions sont disponibles pour la conversion entre MBF et IEEE formats. Comme Microsoft déplacé vers complète d'acceptation de la norme IEEE, cependant, prennent en charge pour le format MBF a été supprimé.

Visual Basic pour Windows utilise la norme IEEE. Le format MBF, toutefois, n'est pas compatible avec la norme IEEE et les données enregistrées de cette manière ne seront pas lisibles.

Résolution

Les structures PDS (Physical Design Structures) et Visual Basic pour MS-DOS produits contient des fonctions de conversion entre le format MBF et au format IEEE. Ces fonctions ne sont pas disponibles dans Visual Basic pour Windows. Voici deux solutions de contournement possibles à ce dilemme :
  1. Un programme peut être écrits dans les structures PDS (Physical Design Structures) ou de Visual Basic pour MS-DOS recrée le fichier contenant les données MBF. Après avoir lu les informations du fichier dans le service PDS ou Visual Basic pour MS-DOS, vous pouvez utiliser les fonctions $ MKxMBF (consultez la documentation structures PDS (Physical Design Structures) ou de Visual Basic pour MS-DOS ou leur aide menus) pour convertir les données au format IEEE. Cette méthode est recommandée pour deux raisons :
    • Il convertit vos données IEEE afin que les autres programmes peuvent accéder à vos fichiers.
    • Si vous utilisez la méthode 2, votre programme devrez une DLL supplémentaire que vous devez distribuer avec votre application.
  2. Auparavant, il n'existait aucun moyen pour convertir les données à partir de Visual Basic pour Windows. Mais il existe désormais une DLL disponible pour ce faire. Cette DLL (MBF2IEEE.DLL) contient des fonctions qui simulent les fonctions MKS, MKD, CVS et CVD qui étaient présentes dans certains produits de base-base de MS-DOS. Ces fonctions (MKS, MKD, CVS et CVD) n'existent pas dans Visual Basic pour Windows, ainsi la nécessité de cette DLL. La section plus d'informations ci-dessous donne des détails sur la DLL et explique comment télécharger à partir du Centre de téléchargement Microsoft.

Statut

Ce comportement est voulu par la conception même du produit.

Plus d'informations

Détails sur la méthode 2: À l'aide de Mbf2ieee.dll

Remarque : Toutes ces fonctions effectuent des conversions entre Microsoft MBF (format binaire) et IEEE valeurs à virgule flottante. Il est possible que certains de ces produits de base plus récentes-MS-DOS possédait des versions de ces fonctions qui fonctionnaient différemment. Elles permettent par exemple, vous observez un nombre IEEE sous la forme d'une chaîne sans convertir MBF. Les routines décrites ici sont fournies uniquement comme un moyen de récupérer les anciennes données MBF.

Ces fonctions fournissent des conversions entre IEEE valeurs à virgule flottante et flottants Microsoft MBF (format binaire) des valeurs de virgule. Voici un ensemble d'instructions qui doivent être incluses dans un programme de base Visual qui appelle ces fonctions declare :
   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
				

Vous trouverez ci-après une description de chacune de ces fonctions avec un exemple.

CVS et CVD fonctions

Ces fonctions acceptent un 4 octets (CVS) ou 8 octets (CVD) chaîne comme argument. Ils attendent le modèle binaire de cette chaîne pour représenter une précision simple ou double valeur MBF, respectivement. Résultat de la fonction renvoie un IEEE.
   Dim MBF As String, IEEE As Single
   ' load the string from a file, etc.
   IEEE = CVS(MBF)
				

MKS et fonctions MKD

Ces fonctions acceptent un unique IEEE (MKS) ou double (MKD) valeur de précision comme argument. Il convertit cette valeur en une valeur MBF 4 octets ou 8 octets et retourne dans une chaîne.
   Dim MBF AS String, IEEE As Single
   MBF = MKS(IEEE)
   ' Now write the MBF value out to disk
				

Problèmes potentiels

Il existe des différences entre le format de l'IEEE et MBF. Pour cette raison précision risquent d'être perdue pendant les conversions. Il est également possible qu'un nombre ne peut pas être converti entre les deux formats. Si c'est le cas, un débordement de Visual Basic (erreur n° 6) est généré. Il s'agit d'une erreur récupérable, donc gérer l'erreur en conséquence.

Comment obtenir Mbf2ieee.dll

Le fichier suivant est disponible pour téléchargement à partir du Centre de téléchargement Microsoft :
Mbf2ieee.exe
Pour plus d'informations sur la façon de télécharger des fichiers du support technique Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
119591Comment faire pour obtenir des fichiers de support technique Microsoft auprès des services en ligne
Microsoft a analysé ce fichier en vue de détecter la présence de virus. Microsoft a utilisé les logiciels de détection de virus les plus récents qui était disponible sur la date à laquelle le fichier a été validé. Le fichier est stocké sur des serveurs sécurisés, empêchant toute modification non autorisée du fichier. Après avoir téléchargé Mbf2ieee.exe, exécutez-le pour obtenir Mbf2ieee.dll ainsi que les fichiers source et un fichier Mbf2ieee.txt, qui est un fichier Lisezmoi qui contient le texte de cet article.

Code source inclus dans Mbf2ieee.exe

En outre .dll lui-même, le code source est également fourni, afin de pouvoir apporter des modifications et recompilez si vous avez Microsoft c. Pour recompiler et générer un nouveau fichier .dll, vous devez utiliser Microsoft C car les routines sont spécifiques à Microsoft C et s'appuient sur la façon dont Microsoft C renvoie les valeurs de point flottant. Ce code source ne compilez pas avec Borland c.

Pour recompiler avec Microsoft C, utilisez les instructions de ligne de commande suivantes pour générer 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
				

Propriétés

Numéro d'article: 140520 - Dernière mise à jour: vendredi 24 janvier 2014 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
Mots-clés : 
kbnosurvey kbarchive kbmt kbdownload kb16bitonly kbfile kbprb kbsample KB140520 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 140520
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

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