タイトル : Re^11: ファイルパスの機種依存文字を取得する方法について 投稿日 : 2014/12/11(Thu) 16:48 投稿者 : 魔界の仮面弁士
> 半角中点は表示されたままでした。 ここでいう「半角中点」が、どの文字を示しているのか分かりませんが、 表示させようとしているデータに問題があるのかもしれません。 (vbNullChar が描画されているわけでは無いのですよね?) 表示させようとしている文字列を下記のプロシージャに渡してみて、 どのような内容がイミディエイトに表示されるか、教えていただけ無いでしょうか。 Public Sub Dump(ByRef Unicode As Variant) Select Case VarType(Unicode) Dim bin() As Byte, v As Variant, n As Long Case vbString, vbByte Or vbArray bin = Unicode n = 0 Debug.Print "*** 文字数:"; Len(Unicode) For Each v In bin If n = 0 Then Debug.Print Tab(1); Debug.Print Right("00" & Hex(v), 2); If n = 7 Then Debug.Print " "; ElseIf n >= 15 Then Debug.Print End If n = n + 1 Next Debug.Print Tab(1); String(33, "=") End Select End Sub > 自作の関数と思いました。 Visual Basic において、関数とは「0 個以上の引数を受け取って、戻り値を返すもの」を指します。 自作されるものとしては、Function プロシージャ の事ですね。Sub ではなく。 言語系によっては、戻り値を返さない関数(または無効値を返す関数)というものが 定義されている場合もあるのですが、VB はそうではありません。 以下、VB5 Books Online / VB6 MSDN Library より抜粋: 》 》 Visual Basic には、Sqr、Cos、Chr などの組み込み関数がありますが、 》 ユーザー定義の関数を作成することもできます。関数を作成するには、 》 Function ステートメントを使って Function プロシージャを記述します。 》 > GetOpenFileNameW関数の.lpstrFileプロパティの内容が数値になります。 文字列バッファのアドレスを、数値として指定しています。 文字列が「数値になる」わけではありません。 > .lpstrFileプロパティの内容を 厳密には「プロパティ」では無く、ユーザー定義型のメンバーですね。 > 文字列に変換できますか? 出来ますが、今回は .lpstrFile の数値を直接読み取る必要はありません。 ご自身が宣言された文字列変数を指し示すポインタに過ぎないからです。 たとえば、.lpstrFile フィールドに対して、 .lpstrFile = StrPtr(strFile) として指定していた場合、API 呼出し後には、strFile 変数の中身が 既に書き換わった状態になっています。.lpstrFile を読み直す必要はありません。 サンプル掲示板に投稿した内容も、そのように処理されていますよね。 |