タイトル : Re^12: ファイルパスの機種依存文字を取得する方法について 投稿日 : 2014/12/11(Thu) 17:46 投稿者 : マサタロウ
> そもそも、StrConv した時点で破損していませんか? > > > たとえば vbFromUnicode 変換の場合: > > Dim S As String > Dim bin() As Byte > > S = ChrW(&H33A5) '立方メートル > Debug.Print Hex(AscW(S)) '33A5 なら成功 > > bin = StrConv(S, vbFromUnicode) 'Unicode バイナリを「Unicode→Shift_JIS変換」 > Debug.Print Hex(bin(0)) 'Shift_JIS に無い文字なので「?」などに化ける 忘れていました。イミディエイトウィンドウには、 33A5 3F と表示されます。Hex(bin(0))は「?」になってません。 「3F」の意味は文字化け? > 表示させようとしている文字列を下記のプロシージャに渡してみて、 > どのような内容がイミディエイトに表示されるか、教えていただけ無いでしょうか。 最初は表示させたい機種依存文字の一つ *** 文字数: 1 6126 ================================= 2014/12/11/18:24 修正(下記、例)のパスを入力) *** 文字数: 62 43003A005C004400 6F00630075006D00 65 00 6E 00 74 00 73 00 20 00 61 00 6E 00 64 00 20 00 53 00 65 00 74 00 74 00 69 00 6E 00 67 00 73 00 5C 00 75 00 73 00 65 00 72 00 4E 00 61 00 6D 00 65 00 5C 00 C7 30 B9 30 AF 30 C8 30 C3 30 D7 30 5C 00 D7 30 ED 30 B0 30 E9 30 E0 30 2E 00 65 00 78 00 65 00 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF 65 FF ================================= 以上でした。 > > 自作の関数と思いました。 > Visual Basic において、関数とは「0 個以上の引数を受け取って、戻り値を返すもの」を指します。 > 自作されるものとしては、Function プロシージャ の事ですね。Sub ではなく。 Subプロシージャでした。 > たとえば、.lpstrFile フィールドに対して、 > .lpstrFile = StrPtr(strFile) > として指定していた場合、API 呼出し後には、strFile 変数の中身が > 既に書き換わった状態になっています。.lpstrFile を読み直す必要はありません。 > > サンプル掲示板に投稿した内容も、そのように処理されていますよね。 文字列の表示ができました。 > > 半角中点は表示されたままでした。 > > ここでいう「半角中点」が、どの文字を示しているのか分かりませんが、 > 表示させようとしているデータに問題があるのかもしれません。 > (vbNullChar が描画されているわけでは無いのですよね?) 上記、文字列の表示で、For〜Nextから抜ける条件に"vbNullChar"を 指定しているため、"vbNullChar"が表示されているのでしょうか? 例) C:\Documents and Settings\userName\デスクトップ\プログラム.exe・・・・・・・・・・・・・・・ |