• ベストアンサー

VB6にてHEXコード「EE」をファイルに書きたい。

VB6を使用して、HEXコードの「EE」をテキストファイルに出力しようと考えています。 私が確認したところ HEXコードの「DF」は、Chr(&HDF)にて出力できるのですが、 HEXコードの「E0」以降はうまく出力できません。 どなたかお解りになる方ご教授を、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

うまく動かないみたいだね。これは驚いた。 一応、次のコードをイミディエイトウィンドウで試してみましたが、 両方ともダメでした。 ?hex$(asc(chr(&hee))) ?hex(ascb(&hee)) 最初の方は質問者さんのところでは20になるとのことでしたが、 私の環境では00、後者は20になりました。 これは宣言を文字列でなくバイト配列で扱う方が簡単でいいです。 それで私ならbinaryモードでオープンしてputとgetで一括処理しますが、 ここら辺は設計に関する問題なので言及はいたしません。

その他の回答 (3)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.4

今しがた見直してみたら歯抜けの状態になっていましたので修正します。 ?hex(ascb(&hee))     ↓ ?hex(ascb(chrB(&hee)) chrBはバイト型を返すからhex$でも、ascでもうまくありません。

Vb6user3
質問者

お礼

色々と調査をしていただきありがとうございます。 HEXの「EE」は、バッチ更新データのエンドレコード として、必要という仕様になっており、お尋ねしました。

Vb6user3
質問者

補足

みなさん色々調査をしていただきありがとうございました。 私は、以下の解決方法を見つけました。 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の開発者様、みなさんありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

VB6はもっていないので確かめてはいないのですが、やはり E0付近のコードを chr に渡すのは問題があるようです。 VB6だと SJISの範囲を考慮しないchrbという関数があるようなので、 これをchrの代わりに使ってみてはどうでしょうか?

参考URL:
http://msdn2.microsoft.com/ja-JP/library/613dxh46.aspx
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

どう「うまく出力できない」のかがわかりませんが、 十六進 E0からFCまではShiftJISでのlead byteになっているので 普通の「テキスト」としては出力するのは問題ありではないでしょうか? ほかにも 81~9Fあたりも同じ問題を抱えていると思うのですが、こちらは どうですか?

Vb6user3
質問者

補足

説明が足らずに申し訳ありません。 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」になってしまいます。 よろしくお願いします。

関連するQ&A