UNCのパス名を渡して、そのディレクトリ下に存在するファイルを
下層フォルダごと検索してリストで取得したいのですが、
何か方法はありますか?
過去記事にWNetAddConnection2(API)を使ってネットワークドライブに
割り当てる方法が紹介されていましたが、それ以外で何かあれば
ご教授ください。
すみません、日本語が変だったかもです。
要するに「\\<コンピュータ>\<共有名>\<フォルダ>」という文字列を渡し、
そのフォルダに属する下層ディレクトリの中にあるファイルをリストにして
得たいのですが、どうでしょう?
FindFirst,FindNextを使えば、フォルダに属するファイルと、
フォルダに属する下層ディレクトリの中にあるファイルを検索できます。
リストにするのはTListでも使えば良いでしょう。
ありがとうございます!
今日は遅いので、明日試してみます。
>過去記事にWNetAddConnection2(API)を使ってネットワークドライブに
>割り当てる方法が紹介されていましたが、それ以外で何かあれば
WNetAddConnection2 を使った接続
以外というのは、何か理由があるのですか?
>>igyさん
WNetAddConnection2に何かしらのドライブ名を指定してやる必要があると思います。
プログラムはネットワークドライブをローカルドライブとして割り当て、
使用した後で切断するように作成するとした時に、
ある時点でエンドユーザーが都合で自分で割り当てを行った場合(ないと思いますが)に
うまく動作しない可能性があるのではないかと思った次第です。
なので、直接"\\〜"のUNCを渡せる方法がないかと思ったのですが。。
>WNetAddConnection2に何かしらのドライブ名を指定してやる必要があると思います。
>プログラムはネットワークドライブをローカルドライブとして割り当て、
>使用した後で切断するように作成するとした時に、
>ある時点でエンドユーザーが都合で自分で割り当てを行った場合(ないと思いますが)に
>うまく動作しない可能性があるのではないかと思った次第です。
>なので、直接"\\〜"のUNCを渡せる方法がないかと思ったのですが。。
私の場合、ログオンするユーザーIDとパスワードを指定して接続するために、
WNetAddConnection2 を使って(ただし、ローカルドライブにマッピングせず)接続してから、
「\\<コンピュータ>\<共有名>\<フォルダ>\<ファイル名>」で指定された
共有先のファイルにアクセスしたことがあります。
結果的に、FindFirstにパスを渡した所、うまく取得できました。
ただ、下層フォルダまで検索させる方法というのが良くわかりません。
ネット上を探した所、下記のサイトに再帰的に処理させる、とありますが、
どのようにすれば良いのでしょうか?
http://www.geocities.jp/asumaroyuumaro/program/tips/SearchFile.html
>ネット上を探した所、下記のサイトに再帰的に処理させる、とありますが、
>どのようにすれば良いのでしょうか?
この Delphi Q & A掲示板 で
再帰
で検索してみるのは、どうですか?
igyさん、レス有難う御座います。
再帰はちょっと頑張ってみました。
フルパスのファイルリストを返す関数として作成したかったのですが、
戻し方?というか、再帰する時にどのように処理すれば良いかが
わからなくなってしまいました。
今回は個人的に時間が無い為、検索するフォルダを1つずつ渡して
検索する方法を取りたいと思います。
自分の中では解決していないので、チェックを付けませんが、
なにかアドバイスがあったら教えてください。
指定したフォルダ内の,ファイル,フォルダのリストを取得.
そのフォルダの中にファイルがあれば,その中も,全てフルパスで取得する.
というこであれば,以下が参考にならないでしょうか.
ここのリスト4です.
http://mrxray.on.coocan.jp/Delphi/plSamples/780_FileInfoListETC.htm#04
Mr.XRAYさん、とても分かりやすいサンプルを有難う御座います!
情報量が豊富ですね。他のコンテンツも参考にさせていただきます。
リカーシブコールは自分にはまだ応用して使う事はできなそうですが、
ファイルサーチに関しては、何となくわかりました。
(どのような順序で処理していくのか、とか、ステップ実行しても
理解できませんでした…)
とりあえずは解決できたので、クローズさせていただきます。
ご回答頂いた皆様、ありがとう御座いました。
ツイート | ![]() |