- ベストアンサー
VB6LEを使ってのファイル出力について
現在、自分はMIDI作成ツールをVB6LEを使って作っているのですが、 ファイル出力の段階でうまく行きません。 Chr(144)やChr(224)といった文字をファイルに出力する方法を教えていただけませんか? OSはWindows98SEを使用し、言語はVB6LEです。 OSに依存しない方法をできれば教えてほしいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
私の知っている限りでは、Print #を使っている限りは、無理だと思います。 Chr()は、一度Unicodeになります。Unicodeになるときに、Unicodeにない文字はNullになってしまいます。 では、Chr()を使用しないで、Byteの配列に設定してから、出力すればOKかと言うと、Print #だと一度Unicodeの文字列にしてから、出力しますから、やはりアウトになります。 Open For Binayを使用した場合は、文字ではなく、バイナリーデータとして出力しているので、余分な変換が入らないためにうまくいっています。 という訳で、私は、Print #では駄目じゃないかと思うのですが、どなたか出来る方法がありましたらフォローお願いします。
その他の回答 (4)
- arata
- ベストアンサー率49% (139/279)
VB2では、内部コードにUNICODEを使用していませんので、ご希望のことができたのだと思います。
- arata
- ベストアンサー率49% (139/279)
こうじゃ駄目ですが? Dim bytData(1 To 2) As Byte Open "c:\test.txt" For Binary Access Write Lock Write As #1 bytData(1) = 144 bytData(2) = 244 Put #1, , bytData Close #1
お礼
アドバイスありがとうございます。 確かにきれいに出力することができました。 ですが、出力命令を Open "c:\test.txt" For Output As #1 Print #1, dat Close #1 で行っているので、できればこの方法に絡めたやり方を 教えていただきたいです。
- linus127
- ベストアンサー率38% (22/57)
補足です. でませんか~ぁ・・・ -_-;;; で,エラーは出ませんか? ファイル出力はできるが,chr(144)などの部分が出力されていないとか,"ABCDEF"では正しく出力されているとか,もうすこし細かい状況がわからないとなんとも言えません. それから,書きこみのチェックはどのように行っていますか? 書き出したファイルをテキストエディタなどで開いた場合,128-255の文字コードのうち,半角カナで無い部分はシフトJISの1バイト目と判断されます.
お礼
説明しますと・・・ エラーは出ません。 出力時、Chr(144)などを出力したところが Chr(0)を出力したようになっています。 その他、いくつかはうまく出力されませんが、 それ以外はうまく出力されます。 チェックのほうはバイナリエディタを使って行ってます。 名前は「Stirling」といいます。
- linus127
- ベストアンサー率38% (22/57)
VB6LEは使ったこと無いのですが(VB5,VB6は使ったことがある) OPEN filename for output as #1 PRINT #1,chr(144);chr(224); CLOSE #1 で出ませんか? #LEバージョンの制限に入っていたらすみません.
お礼
早速のお返事ありがとうございます。 しかし、残念ながら、この方法ではうまく出力されないようです。 他に何か思いつきませんか?
お礼
アドバイスありがとうございます。 やはり無理なのでしょうか。 VB2ではうまくいっていたのでVB6でもいくと思ったのですが・・・