- ベストアンサー
VB6にてHEXコード「EE」をファイルに書きたい。
VB6を使用して、HEXコードの「EE」をテキストファイルに出力しようと考えています。 私が確認したところ HEXコードの「DF」は、Chr(&HDF)にて出力できるのですが、 HEXコードの「E0」以降はうまく出力できません。 どなたかお解りになる方ご教授を、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
うまく動かないみたいだね。これは驚いた。 一応、次のコードをイミディエイトウィンドウで試してみましたが、 両方ともダメでした。 ?hex$(asc(chr(&hee))) ?hex(ascb(&hee)) 最初の方は質問者さんのところでは20になるとのことでしたが、 私の環境では00、後者は20になりました。 これは宣言を文字列でなくバイト配列で扱う方が簡単でいいです。 それで私ならbinaryモードでオープンしてputとgetで一括処理しますが、 ここら辺は設計に関する問題なので言及はいたしません。
その他の回答 (3)
- gungnir7
- ベストアンサー率43% (1124/2579)
今しがた見直してみたら歯抜けの状態になっていましたので修正します。 ?hex(ascb(&hee)) ↓ ?hex(ascb(chrB(&hee)) chrBはバイト型を返すからhex$でも、ascでもうまくありません。
- sakusaker7
- ベストアンサー率62% (800/1280)
VB6はもっていないので確かめてはいないのですが、やはり E0付近のコードを chr に渡すのは問題があるようです。 VB6だと SJISの範囲を考慮しないchrbという関数があるようなので、 これをchrの代わりに使ってみてはどうでしょうか?
- sakusaker7
- ベストアンサー率62% (800/1280)
どう「うまく出力できない」のかがわかりませんが、 十六進 E0からFCまではShiftJISでのlead byteになっているので 普通の「テキスト」としては出力するのは問題ありではないでしょうか? ほかにも 81~9Fあたりも同じ問題を抱えていると思うのですが、こちらは どうですか?
補足
説明が足らずに申し訳ありません。 VB6の記述で Open "XXX.txt" For Output As #1 OP_Txt = Chr(0) & Chr(&HEE) & Space(92) Print #1, OP_Txt Close #1 バイナリエディタで内容を確認すると、最初のChr(0)は 期待通りに、HEXの「00」になっていますが、Chr(&HEE) は、HEXの「EE」を期待するが「20」になってしまいます。 よろしくお願いします。
お礼
色々と調査をしていただきありがとうございます。 HEXの「EE」は、バッチ更新データのエンドレコード として、必要という仕様になっており、お尋ねしました。
補足
みなさん色々調査をしていただきありがとうございました。 私は、以下の解決方法を見つけました。 basp21(babaq)の BinaryRead ファイルからバイナリ配列読み と BinaryWrite ファイルにバイト配列を書込む の メソッドを使用して以下のプログラムを作成しました。 Set bobj = CreateObject("basp21") a = bobj.BinaryRead("EEEE.txt") wlen = bobj.BinaryWrite(a, "data3.txt",1) data3.txtの最後にEEEE.txtを追加します。 BASP21の開発者様、みなさんありがとうございました。