PRB: MBF Visual Basic で IEEE に Windows の変換

文書翻訳 文書翻訳
文書番号: 140520 - 対象製品
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
すべて展開する | すべて折りたたむ

目次

現象

古い Microsoft Basic 製品で作成されたデータ ファイル (リンクの基本、GW-基本認証、および Basica (IBM や Compaq ライセンス Basic)) Visual Basic for Windows では読み取るできない可能性があります。

原因

前に、IEEE 浮動ポイント標準が広く認められています、Microsoft 内部浮動ポイント形式が Microsoft バイナリ形式 (MBF) と呼ばれるを使用します。 IEEE 標準は後で導入されましたとなりました、業界標準。

初期のバージョンの Microsoft QuickBASIC および GW Basic MBF 形式のみをサポートしました。 Microsoft の基本的な Professional 開発システム (PDS) と MS-DOS 用の Visual Basic では機能は MBF と IEEE 形式を変換する利用。 マイクロソフトは、IEEE 規格の完了の承諾に向かって移動、としてただし、MBF 形式が削除されたをサポートします。

IEEE 標準を使用する Visual Basic のされます。 MBF 形式はただし、IEEE 規格と互換性がして、この方法で保存されるデータは読み取り可能なできません。

解決方法

PDS とは、MS-DOS 製品に含まれている MBF 形式と IEEE 形式間で変換する関数場合。 Visual Basic for Windows では、これらの関数はありません。 このジレンマを 2 つの考えられる回避策は次のとおりです。
  1. プログラムは MBF データを含むファイルを再作成される MS-DOS の PDS または Visual Basic で記述できます。 PDS または Visual Basic に MS-DOS 用のファイル情報を読む、MKxMBF $ 関数を使用することができます (MS-DOS やそのヘルプの PDS または Visual Basic は、マニュアルを参照してくださいメニュー) のデータを IEEE 形式に変換します。 このメソッドは 2 つの理由から優先します。
    • データに変換 IEEE 他のプログラムがファイルにアクセスできるようにします。
    • 方法 2 を使用する場合、プログラムのアプリケーションと共に配布する必要があります、余分な DLL は必要です。
  2. 以前は、Visual Basic for Windows からデータを変換する方法がありません。 今すぐこれを利用できる DLL があります。 この DLL (MBF2IEEE.DLL) では機能でした - MS-DOS ベースの基本的な製品の一部に存在する MKS、MKD、CVS、CVD 関数をシミュレートが含まれます。 これらの関数 (MKS、MKD、CVS、および CVD) は、Visual Basic for Windows で、この DLL の必要性したがって存在しません。 以下の詳細セクションは、DLL の詳細を示し、「Microsoft ダウンロード センター」からダウンロード方法について説明します。

状況

これは仕様によるものです。

詳細

2 つの方法についての詳細: Mbf2ieee.dll を使用します。

注: これらの関数はすべて Microsoft バイナリ形式 (MBF) と IEEE 浮動小数点値の間の変換を行います。 新しい - MS-DOS ベースの基本的な製品の一部がバージョンの異なる方法で動作していたこれらの関数です。 たとえば、できます MBF に変換せずを文字列として、IEEE 番号で参照します。 ここで説明したルーチンは、古い MBF データを取得する手段としてのみ提供されます。

これらの関数 IEEE 間の変換を提供する浮動小数点値と Microsoft バイナリ形式 (MBF) 浮動値をポイントします。 以下のセットは Declare ステートメントをこれらの関数を呼び出す、Visual Basic プログラムに含まれては必要があります。
   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
				

以下は各例と共にこれらの関数の説明です。

CVS および CVD 関数

これらの関数は引数として、4 バイト (CSV) または 8 バイト (CVD) の文字列を受け入れます。 期待を単一引用符または二重の精度、MBF 値をそれぞれ表すこの文字列のビット パターンです。 関数の戻り値、IEEE になります。
   Dim MBF As String, IEEE As Single
   ' load the string from a file, etc.
   IEEE = CVS(MBF)
				

MKS および MKD 関数

これらの関数、IEEE 単一 (MKS) を受け入れるか (MKD) を倍精度の値を引数として。 この値は 4 バイトまたは 8 バイトの MBF 値に変換し、文字列で返します。
   Dim MBF AS String, IEEE As Single
   MBF = MKS(IEEE)
   ' Now write the MBF value out to disk
				

起り得る問題

IEEE 形式と MBF 違いがあります。 このような理由から精度が失われる、変換時に可能性があります。 間、2 つの形式では数値に変換できないことです。 このような場合は、の場合、Visual Basic のオーバーフロー (エラー #6) が生成されます。 トラップ可能なエラーは、ので、エラーを適宜処理します。

Mbf2ieee.dll を取得する方法

下記のファイルは、Microsoft Download Center からダウンロードできます:
Mbf2ieee.exe
マイクロソフトのサポート ファイルをダウンロードする方法の追加についてはをクリックして以下「サポート技術情報」(Microsoft Knowledge Base) 資料を参照。
119591Q119591 How to Obtain Microsoft Support Files from Online Services
マイクロソフトはこのファイルのウイルスをスキャンします。 マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用しています。 ファイルは、ファイルに不正な変更を防止するセキュリティが強化されたサーバーに格納されます。 Mbf2ieee.exe、実行、ソース ファイルと、Mbf2ieee.txt ファイルと共に Mbf2ieee.dll を取得してダウンロードした後、この資料のテキストを含む readme です。

Mbf2ieee.exe に含まれるソース コード

自体、.dll、に加えて、ソース コードも用意されています、変更を加えるおよび Microsoft C. がある場合に再コンパイルできるように 再コンパイルして新しい.DLL ファイルのビルドには、必ず使用して Microsoft C、ルーチンは Microsoft C に固有であり Microsoft C 浮動ポイント値を取得する方法に依存であるためください。 このソース コードは Borland C. でコンパイルされません。

Microsoft C を再コンパイルをするには、次のコマンド ライン ステートメントを使用して、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
				

プロパティ

文書番号: 140520 - 最終更新日: 2014年2月6日 - リビジョン: 2.2
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
キーワード:?
kbnosurvey kbarchive kbdownload kb16bitonly kbfile kbprb kbsample kbmt KB140520 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:140520
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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