ネットワーク共有先のファイルリストを取得するには?

解決


ぽぽろん  2008-11-05 17:05:08  No: 32456  IP: 192.*.*.*

UNCのパス名を渡して、そのディレクトリ下に存在するファイルを
下層フォルダごと検索してリストで取得したいのですが、
何か方法はありますか?

過去記事にWNetAddConnection2(API)を使ってネットワークドライブに
割り当てる方法が紹介されていましたが、それ以外で何かあれば
ご教授ください。

編集 削除
ぽぽろん  2008-11-06 20:38:58  No: 32457  IP: 192.*.*.*

すみません、日本語が変だったかもです。
要するに「\\<コンピュータ>\<共有名>\<フォルダ>」という文字列を渡し、
そのフォルダに属する下層ディレクトリの中にあるファイルをリストにして
得たいのですが、どうでしょう?

編集 削除
HOta  2008-11-06 21:55:23  No: 32458  IP: 192.*.*.*

FindFirst,FindNextを使えば、フォルダに属するファイルと、
フォルダに属する下層ディレクトリの中にあるファイルを検索できます。
リストにするのはTListでも使えば良いでしょう。

編集 削除
ぽぽろん  2008-11-06 22:15:02  No: 32459  IP: 192.*.*.*

ありがとうございます!
今日は遅いので、明日試してみます。

編集 削除
igy  2008-11-06 22:18:33  No: 32460  IP: 192.*.*.*

>過去記事にWNetAddConnection2(API)を使ってネットワークドライブに
>割り当てる方法が紹介されていましたが、それ以外で何かあれば

WNetAddConnection2 を使った接続
以外というのは、何か理由があるのですか?

編集 削除
ぽぽろん  2008-11-07 11:51:05  No: 32461  IP: 192.*.*.*

>>igyさん
WNetAddConnection2に何かしらのドライブ名を指定してやる必要があると思います。
プログラムはネットワークドライブをローカルドライブとして割り当て、
使用した後で切断するように作成するとした時に、
ある時点でエンドユーザーが都合で自分で割り当てを行った場合(ないと思いますが)に
うまく動作しない可能性があるのではないかと思った次第です。
なので、直接"\\〜"のUNCを渡せる方法がないかと思ったのですが。。

編集 削除
igy  2008-11-07 12:42:38  No: 32462  IP: 192.*.*.*

>WNetAddConnection2に何かしらのドライブ名を指定してやる必要があると思います。
>プログラムはネットワークドライブをローカルドライブとして割り当て、
>使用した後で切断するように作成するとした時に、
>ある時点でエンドユーザーが都合で自分で割り当てを行った場合(ないと思いますが)に
>うまく動作しない可能性があるのではないかと思った次第です。
>なので、直接"\\〜"のUNCを渡せる方法がないかと思ったのですが。。

私の場合、ログオンするユーザーIDとパスワードを指定して接続するために、
WNetAddConnection2 を使って(ただし、ローカルドライブにマッピングせず)接続してから、
「\\<コンピュータ>\<共有名>\<フォルダ>\<ファイル名>」で指定された
共有先のファイルにアクセスしたことがあります。

編集 削除
ぽぽろん  2008-11-11 11:34:18  No: 32463  IP: 192.*.*.*

結果的に、FindFirstにパスを渡した所、うまく取得できました。
ただ、下層フォルダまで検索させる方法というのが良くわかりません。
ネット上を探した所、下記のサイトに再帰的に処理させる、とありますが、
どのようにすれば良いのでしょうか?

http://www.geocities.jp/asumaroyuumaro/program/tips/SearchFile.html

編集 削除
igy  2008-11-11 12:38:34  No: 32464  IP: 192.*.*.*

>ネット上を探した所、下記のサイトに再帰的に処理させる、とありますが、
>どのようにすれば良いのでしょうか?

この Delphi Q & A掲示板 で
   再帰
で検索してみるのは、どうですか?

編集 削除
ぽぽろん  2008-11-11 15:48:53  No: 32465  IP: 192.*.*.*

igyさん、レス有難う御座います。
再帰はちょっと頑張ってみました。
フルパスのファイルリストを返す関数として作成したかったのですが、
戻し方?というか、再帰する時にどのように処理すれば良いかが
わからなくなってしまいました。

今回は個人的に時間が無い為、検索するフォルダを1つずつ渡して
検索する方法を取りたいと思います。

自分の中では解決していないので、チェックを付けませんが、
なにかアドバイスがあったら教えてください。

編集 削除
Mr.XRAY  2008-11-11 19:23:12  No: 32466  IP: 192.*.*.*

指定したフォルダ内の,ファイル,フォルダのリストを取得.
そのフォルダの中にファイルがあれば,その中も,全てフルパスで取得する.

というこであれば,以下が参考にならないでしょうか.
ここのリスト4です.

http://mrxray.on.coocan.jp/Delphi/plSamples/780_FileInfoListETC.htm#04

編集 削除
ぽぽろん  2008-11-13 10:56:06  No: 32467  IP: 192.*.*.*

Mr.XRAYさん、とても分かりやすいサンプルを有難う御座います!
情報量が豊富ですね。他のコンテンツも参考にさせていただきます。
リカーシブコールは自分にはまだ応用して使う事はできなそうですが、
ファイルサーチに関しては、何となくわかりました。
(どのような順序で処理していくのか、とか、ステップ実行しても
理解できませんでした…)
とりあえずは解決できたので、クローズさせていただきます。

ご回答頂いた皆様、ありがとう御座いました。

編集 削除