投稿時間:2007/01/23(Tue) 19:12 投稿者名:お願いします。
Eメール:
URL :
タイトル:バイナリでの漢字コード判定について
先ほど、質問の回答を頂いたのですが、追加が出ましたのでよろしければどなたか分かる方の 回答をお願い致します。お手数ですが、よろしくお願い致します。
バイナリコードを1バイトづつ読んでいき、漢字の時のみもう1バイトを読み、 41a0から7fffの間に該当する場合はリストに出力、という処理を考えていますが、 バイナリコードのIF文判定が上手く判定してきません。
初歩的な事かもしれませんが、バイナリの1バイトの後ろに1バイトを付けた2バイトと 41a0から7fffの間に該当する場合の処理としてCST等をつけてますが、上手くいかない為、 どなたかポイントでも良いのでご指導ねがいますでしょうか?
先ほどから質問ばかりで申し訳ありません。
ちなみに下記のように下手なりに記入していろいろ試してますが、 あまり上手くいかない為、気になる点があったらご指導願います。
勝手を言って申し訳ないのですが、本日中にこの件への質問への回答ができない可能性があり、 返事が明日になる場合がありますので、ご了承願います。
'読み込み用 Dim buf(0) As Byte 'データ判定用 Dim buf2(1) As Byte '41A0判定用 Dim bufstr(1) As Byte '7FFF判定用 Dim bufend(1) As Byte '添え字等 Dim i As Long Dim flag As String '読み込み Open "C:\test.TXT" For Binary As #1 Get #1, , buf flag = "0" '41A0を判定用に退避 bufstr(0) = &H41 bufstr(1) = &HA0 '7FFFを判定用に退避 bufend(0) = &H7F bufend(1) = &HFF 'ファイル終るまで Do Until EOF(1) i = i + 1 '1バイト目が28なら漢字判定対象 If buf(0) = &H28 Then flag = "1" End If Do Until flag = "0" Get #1, , buf '29が出たら漢字終了、出るまでは漢字編集 If buf(0) = &H29 Then flag = "0" Else '1バイト目を判定エリアに編集 buf2(0) = buf(0) '2バイト目を読み、判定エリアに編集 Get #1, , buf buf2(1) = buf(0) '41a0-7fffの範囲内なら表示する If ((CStr(bufstr) <= CStr(buf2)) And (CStr(buf2) <= CStr(bufend))) Then Debug.Print Hex(buf2(0)) & Hex(buf2(1)) End If End If Loop Get #1, , buf Loop Close #1
|