「ファイルを参照」ダイアログを表示するのサンプルについて

解決


ひろむ  2006-01-26 03:57:50  No: 129858

ココのHPのAPI  技術関連で紹介されている「ファイルを保存」コモンダイヤログを表示するのサンプルについての質問です。

このAPIを利用させていただくとPathに格納されるパスには最後にrrr・・・・とrの羅列がみられます。
この現象を解決するにはどうしたらよいのでしょうか?


Blue  2006-01-26 10:20:54  No: 129859

>  '「フォルダを参照」ダイアログを表示
>   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


Blue  2006-01-26 10:22:01  No: 129860

あれ?
> 「ファイルを参照」ダイアログ
じゃなくて
> 「ファイルを保存」コモンダイヤログ
ですか?

まぁどうせ応用すればできると思いますが。。。


ガッ  2006-01-26 11:53:39  No: 129861

Instr()でvbNullCharが見つからない場合、例外が発生する恐れがあるので
Replace(nPath,vbNullChar,vbNullString)にするのはどうでしょう?


_  2006-01-26 18:04:52  No: 129862

> Instr()でvbNullCharが見つからない場合、例外が発生する恐れがあるので
見つからない可能性を考慮するなら、
  InStr(1, nPath & vbNullChar, vbNullChar)
のような指定もアリかな。

> Replace(nPath,vbNullChar,vbNullString)にするのはどうでしょう?
最初の null 文字以降のデータは、常に nullであると
保証されているわけでは無い……と思う。


ひろむ  2006-01-26 21:14:19  No: 129863

すいません。
タイトルの通り参照ダイアログです。


ひろむ  2006-01-27 02:45:39  No: 129864

解決することができました。
ありがとうございました。
Blueさんの
>nPath = Left$(nPath, InStr(nPath, Chr$(0)) - 1)
を使わせていただきました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加