投稿日 | : 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