• ベストアンサー

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

  • VB6LEを使ってのファイル出力について

    現在、自分はMIDI作成ツールをVB6LEを使って作っているのですが、 ファイル出力の段階でうまく行きません。 Chr(144)やChr(224)といった文字をファイルに出力する方法を教えていただけませんか? OSはWindows98SEを使用し、言語はVB6LEです。 OSに依存しない方法をできれば教えてほしいです。

  • VB2005を使ってバイナリファイルの中身をHEX変換してテキスト表示したい。

    VBは初心者ですが、以下のような事をVB2005を使って実現したいのですが、参考コーディングがありましたら教えて下さい。 ・バイナリファイルファイルの中身を可変の長さ(オープン時に変換の長さは決定している)をHEXに変換してテキスト表示したい。

  • VB6でテキストファイルをCSVファイルに変換

    VB6でテキストファイルをCSVファイルに変換の機能を作っていますが、 壁にぶつかりました; 項目         サイズ(byte) 1.作成日        15 2.マスタID      10 以上の2項目は固定です。 3.コード      9 4.名前1         10 5.名前n(登録数最大20個とする)19個*10byte=190 5.年齢    3 ''項目名の取得 ITR = ITR + Chr(39) + "作成日" + Chr(39)  中略 ''ファイルへの書込 ObjOutFile.Write (ITR) ITR=からはどうやって書くのかよくわからないです。 一行で出力したいので、名前は複数ある場合は、ヘッダの項目名前1、名前2、名前3のように並びたいのですが。。 詳しいかたいらしゃったら、ご教授ください。

  • VB6.0でのバイナリデータの扱いについて

    文字コードについて 現在ハンディターミナルとPCとの通信を行うプログラム(VB6.0)を作成しています。      プログラムの一部で下のような記述があります。 ------------------ BCC = Chr(aa) ------------------ 変数aaには数字の226が入り、変数BCCには226に該当する文字列が格納されるはずですが、BCCには文字化けした文字が入り困っています。 調べた結果VB6.0は文字列をunicodeとして扱い、その結果内部的な文字列変換が理由で、文字コード上に存在しない幾つかのバイナリデータは、Chr関数で扱えないというところまではわかりました。 そこでChr命令をChrB命令に変更しましたが、求めている答えが返ってきませんでした。 文字コード表では"DF"までは存在しますが、それ以降の文字は存在しないため扱うのは無理なのでしょうか? StrConvなどを使用すれば可能なのかどうか等考えているのですがわからない状況です。 どなたかご教授願えないでしょうか。宜しくお願い致します。

  • vbで出力したテキストファイルを7日後に削除したい

    はじめまして。 vbで出力したテキストファイルを7日後に削除するプログラムを考えております。 参考になるコードもしくは関数、ホームページがありましたら教えてください。 よろしくお願い致します。

  • VB2008EEの良書探しています

    表題の件、よろしくお願いします。 当方、業務にてVB6.0を常用していますが 時代の波もあり、VB2008EEが浸透しつつあります。 (補足ですが、当方は電子回路設計が主流でプログラミングは付帯業務程度です) そこで、質問します。 .NET以降、まともなオブジェクト指向プログラミング言語となったVBについて 「これはいい!」と思われる書籍を探しています。 とくにオブジェクト指向による、クラスの有益な実装方法が記載されていれば助かります。 当方の業務の用途として、シリアル通信による外部機器の制御が主流です。 それも、テンプレートをベースとしたカスタマイズが主な業務です。 API関数はそれなりに使用します。 マルチスレッドやプロセス間通信などはほぼありません。 プログラミング関係で読破した書籍は 「コードコンプリート 2nd Edition」(上・下巻) 「パーフェクトマスター Visual Basic .NET」 です。 和書・洋書は問いません。 皆様のご見識を頂戴したく思います。 よろしくお願いします。

  • エクセル(VBA)でファイル出力時

    エクセル(VBA)でテキストファイル出力時 リターンコードはどうやって記述するのでしょうか? chr(9)はタブ chr(10)はラインフィード chr(13)はキャリッジリターン らしいんですがリターンコードはなんでしょうか? 宜しくお願いします

  • Designer.vbは直接コードをいじってはだめ?

    VB.netです。 新規でフォームを作成したときに Form1.Designer.vbが作成されますが そこに 'Windows フォーム デザイナを使用して変更できます。 'コード エディタを使って変更しないでください。 と書いてあります。 その下に Me.Name = "Form1" Me.Text = "Form1" などありますが、 これを変更したい場合は、ここをいじるのではなく、 Form1.vb(デザイン)のプロパティから設定しなさい。という意味なのでしょうか? 試しに Form1.vb(デザイン)のプロパティから Textを「フォーム1」にし、 Designer.vbを確認したら Me.Text = "フォーム1"と変わっていました。 しかし、Designer.vbのMe.Textを Me.Text = "ふぉーむ1"にして、 Form1.vb(デザイン)に移ると、 Form1.vb(デザイン)のプロパティも"ふぉーむ1"になりました。 「コード エディタを使って変更しないでください。」 と言う意味がわかりません。 よろしくお願いします。

  • VB2008EEのSelect Case

    VB2008EEのSelect Case devilconanさんとのやりとりを締めてしまいましたが、 下記でdevilconanさんは動いているようですが、再度試してもこちらでは動きません。 しかし、別のPCのVB2008EEで試すことが出来たのですが、こちらでは動きました。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" Case "RadioButton2" aaa = "" bbb = "2" End Select End Sub Elseを追加して、ラジオボタン1と2を交互にチェックすると、それぞれ「sssss」とMsgBoxが出ます。 別のPCだと下の記述で、「case1」「case2」が表示されました。 Select Case sender.text Case "RadioButton1" aaa = "1" bbb = "" MsgBox("case1") Case "RadioButton2" aaa = "" bbb = "2" MsgBox("case2") Case Else MsgBox("sssss") End Select 動いたPCも動かないPCもXPです。 同じファイルを開いているのですが、この違いは何でしょうか?  

  • 数値のパック10進数の変換について(vb6)

    こんにちは 現在、vb6で開発を行っております。 早速ですが、困っていることがあります。 データベースを読み込んで、その値をテキストファイルに出力しているのですが、ある項目(数値)だけパック10進数に変換して出力しなければなりません。 いろいろなサイトを調べた結果、 例:数値で432 は "0100001100101100" のように変換できることがわかりました。しかし、この時点ではただの文字列のためこの値をテキストファイルに出力しても意味がありません。パック10進数のコード(?)としてテキストファイルに出力するにはこの後、どのようにすればいいのでしょうか。 ご存じの方がいらっしゃれば、ご教授願えないでしょうか?