VB6のStrConv関数について

解決


コンブ  2004-06-03 14:09:26  No: 113683  IP: [192.*.*.*]

StrConvでユニコードデータを得たいのですが
詰まっております。

例)
Dim strData As String
strData =   StrConv (StrConv ("ドキュメント" ,vbUnicode) ,vbFromUnicode)

実行結果  strData  は  "ドキ???ト"となってしまいます。
以下の関数で得たデータをテキストに保存し、バイナリエディタ
で覗いてみてもよくわからなくて困っています。

Private Function Uni(strTest As String) As String

    Dim ss As String
    Dim bytArray() As Byte
    Dim intcount As Integer

    bytArray = strTest
    For intcount = 0 To UBound(bytArray)
         ss = ss & Chr(bytArray(intcount))
    Next
    Uni = ss

    Dim lngFileNo As Long
    lngFileNo = FreeFile
    Open "C:\Documents and Settings\Owner\デスクトップ\Test.txt" For Output As #lngFileNo
    Print #lngFileNo, ss
    Close #lngFileNo

End Function

どうにか"ドキュメント"の文字列を(加工して?)
ユニコードデータに変換して、再度シフトJISに変換しても
"ドキュメント"となるような方法がありますでしょうか?

VB6  WindowsXPです。よろしくお願いします。

編集 削除
test  2004-06-03 14:44:17  No: 113684  IP: [192.*.*.*]

VB6では文字列はUNICODEで扱っています。
bytArrayがシフトJISであるならば、

Uni = StrConv(bytArray, vbUnicode)

で良いと思います。

編集 削除
test  2004-06-03 15:06:31  No: 113685  IP: [192.*.*.*]

あれ、ちょっと変な事言いました。。

    Dim b() As Byte
    Dim i As Long
    Dim ss As String
    
    ss = "ドキュメント"
    
    b = StrConv(ss, vbFromUnicode)
    
    Dim f As Long
    f = FreeFile
    Open "C:\Test1.txt" For Binary As #f
    Put #f, 1, b
    Close #f
    
    b = ss
    
    f = FreeFile
    Open "C:\Test2.txt" For Binary As #f
    Put #f, 1, b
    Close #f

Test1がシフトJIS、Test2がUNICODEとなるはずです。

編集 削除
コンブ  2004-06-03 19:17:00  No: 113686  IP: [192.*.*.*]

testさん、ありがとうございます。
ややこしくこんがらがった(頭の中の)糸がひとつ
ほどけたみたいで、なんだかもう少しで理解できそうです。
目的はまだ達成できませんが、自分がなにがわかってない
かさえ、うまく説明できません(笑)
とりあえず解決とさせていただきます。
また、試行錯誤してわからないときによろしくお願いします。

編集 削除