ココのHPのAPI 技術関連で紹介されている「ファイルを保存」コモンダイヤログを表示するのサンプルについての質問です。
このAPIを利用させていただくとPathに格納されるパスには最後にrrr・・・・とrの羅列がみられます。
この現象を解決するにはどうしたらよいのでしょうか?
> '「フォルダを参照」ダイアログを表示
> Ret = SHBrowseForFolder(BI)
> 'バッファを確保
> nPath = String(256, Chr(0))
>
> If Ret <> 0 Then
> 'パスを取得
> Call SHGetPathFromIDList(Ret, nPath)
' ここで、Instr関数でChr$(0)の位置を検索して、
' Left$関数を利用し、切り出す
nPath = Left$(nPath, InStr(nPath, Chr$(0)) - 1)
> 'パスを格納
> FolderDlg = nPath
あれ?
> 「ファイルを参照」ダイアログ
じゃなくて
> 「ファイルを保存」コモンダイヤログ
ですか?
まぁどうせ応用すればできると思いますが。。。
Instr()でvbNullCharが見つからない場合、例外が発生する恐れがあるので
Replace(nPath,vbNullChar,vbNullString)にするのはどうでしょう?
> Instr()でvbNullCharが見つからない場合、例外が発生する恐れがあるので
見つからない可能性を考慮するなら、
InStr(1, nPath & vbNullChar, vbNullChar)
のような指定もアリかな。
> Replace(nPath,vbNullChar,vbNullString)にするのはどうでしょう?
最初の null 文字以降のデータは、常に nullであると
保証されているわけでは無い……と思う。
すいません。
タイトルの通り参照ダイアログです。
解決することができました。
ありがとうございました。
Blueさんの
>nPath = Left$(nPath, InStr(nPath, Chr$(0)) - 1)
を使わせていただきました。
ツイート | ![]() |