喫茶XRAYトップページ

[スレッド全体
]

[4204] Re6:plFolderWatcherについて返信 削除
2011/1/11 (火) 22:08:57 たてぐや
▼ Mr.XRAYさん

> やっぱり変ですか... 変ですよね.直しますか...  (^^;

 それと、もうひとつ気付いたことを。監視フォルダ内にテキストファイルを
作ります。この時には当然CREATEでファイル名フルパスが帰ってきます。で、
そのテキストファイルをエディタで編集して上書き保存します。多分UPDATEITEM
が帰ってくるような気がしますが、実際はUPDATEDIRで帰ってきます。いろいろ
試してみたのですが、UPDATEITEMが帰ってくる操作は見つからなかったんですけ
ど、これはAPIがそういう仕様なのでしょうか?

[4205] Re7:plFolderWatcherについて返信 削除
2011/1/11 (火) 22:33:30 Mr.XRAY
▼ たてぐやさん

修正しました.今UPしました.

> が帰ってくるような気がしますが、実際はUPDATEDIRで帰ってきます。

これはUPDATEDIRですね.
UPDATEITEMが帰ってくる操作はありますが,失念しました.
前に調べたときに書いておいたのがあったハズなんでが,今みたら
見つかりません.

> ど、これはAPIがそういう仕様なのでしょうか?

ということですね.フォルダ監視のところにイベントの表がありますが,
この表の説明は,MSDNのを私が訳しただけで,実態に我々が考える,直感的
に感じるものと一致しない場合があるようです.
UPDATEDIRが発生する内容は結構多いようです.これまでの観測では.


[4206] Re8:plFolderWatcherについて返信 削除
2011/1/11 (火) 22:37:34 Mr.XRAY
▼ たてぐやさん

> UPDATEITEMが帰ってくる操作はありますが,失念しました.

今,こんなメモを見つけました.
テスト中のプログラムの記述です.

-------------  引用開始 ------------------------------------------------
//  SHCNE_UPDATEITEMは操作しないこと
//  このイベントを処理すると,更にSHCNE_UPDATEITEMが発生して循環してしまう
-------------  引用終わり ------------------------------------------------

で,この手元のコードでは,SHCNE_UPDATEITEMの処理を削除しています.

では,これで.
実は,夕方から「解決まではあと6人」を読んでいるんです(笑).


[4209] Re8:plFolderWatcherについて返信 削除
2011/1/11 (火) 23:39:53 Mr.XRAY
▼ たてぐやさん
> 修正しました.今UPしました.

たんですが,1つ注意が,
StartWatchメソッドの引数がなくなりました.いやなくしました.
今回の修正で必要なくりなりましたので.


[4210] Re9:plFolderWatcherについて返信 削除
2011/1/12 (水) 12:27:01 Mr.XRAY
> たんですが,1つ注意が,
> StartWatchメソッドの引数がなくなりました.いやなくしました.
> 今回の修正で必要なくりなりましたので.


この仕様なんですが,例えばListViewにファイル一覧を表示したとします.
フォルダ監視を配置して,そのフォルダ内を監視する時,そのListViewの
ハンドルを指定して,メッセージ処理,という考えたんです.

もし,複数のListViewを配置して,その各々にフォルダ監視コンポを配置
した場合,各々のウィンドウ(ハンドル)を指定すれば...
ということを想定しました.

今回の複数のフォルダ監視コンポ生成のテストをしてみて,
あれっ!? と思ったわけです.
動作そのものは,極めて単純なのですが,どうして中々...
ちゃんとテストしないからだろう,
と言われてしまえばそれまでなんですが.(^^;

以上,言い分けでした.


[4211] Re9:plFolderWatcherについて返信 削除
2011/1/12 (水) 15:35:09 たてぐや
 ▼ Mr.XRAYさん

> 修正しました.今UPしました.

 さっそくインストールしなおしたのですが、今度は監視フォルダに作成した
ファイルを編集してもUPDATEDIRすら来なくなりました。


[4212] Re10:plFolderWatcherについて返信 削除
2011/1/12 (水) 16:05:37 Mr.XRAY
▼ たてぐやさん

>  さっそくインストールしなおしたのですが、今度は監視フォルダに作成した
> ファイルを編集してもUPDATEDIRすら来なくなりました。


ひぇ〜 ???


[4213] Re11:plFolderWatcherについて返信 削除
2011/1/12 (水) 16:11:57 Mr.XRAY
> > ファイルを編集してもUPDATEDIRすら来なくなりました。

今,ダウンロードしたソースコードでテストしてみましたが,
[4195] のコードで動作しているようです.


[4214] Re10:plFolderWatcherについて返信 削除
2011/1/12 (水) 16:18:25 Mr.XRAY
▼ たてぐやさん

>  さっそくインストールしなおしたのですが、今度は監視フォルダに作成した
> ファイルを編集してもUPDATEDIRすら来なくなりました。


これ,例えばテキストファイルの中身を編集した場合ですよね.
たしかに[4195] のテストコードでは検出できませんでした.

  Options := Options + [evt_UPDATEDIR];

追加したら検出できました.


[4215] Re11:plFolderWatcherについて返信 削除
2011/1/12 (水) 16:19:32 Mr.XRAY
▼ Mr.XRAYさん
> ▼ たてぐやさん
>
> >  さっそくインストールしなおしたのですが、今度は監視フォルダに作成した
> > ファイルを編集してもUPDATEDIRすら来なくなりました。
>
> これ,例えばテキストファイルの中身を編集した場合ですよね.
> たしかに[4195] のテストコードでは検出できませんでした.
>
>   Options := Options + [evt_UPDATEDIR];
>
> 追加したら検出できました.

ハズしていたらゴメンなさい.


[4218] Re12:plFolderWatcherについて返信 削除
2011/1/14 (金) 23:01:23 Mr.XRAY
現状報告です.
進展なし(笑)


[4219] Re13:plFolderWatcherについて返信 削除
2011/1/15 (土) 18:17:21 たてぐや
▼ Mr.XRAYさん
> 現状報告です.
> 進展なし(笑)


 済みません。一昨日からひどい風邪にやられてしまって、いろいろ滞ってい
ました。テキストファイルを編集したような場合、Optionsに追加することで
帰ってくるようになりました。だけれどもこれ、監視フォルダのトップしか帰っ
てこないんですね。更新されたファイル名まで得られるといいのですが…

[4221] Re14:plFolderWatcherについて返信 削除
2011/1/15 (土) 22:19:46 Mr.XRAY
▼ たてぐやさん

>  済みません。一昨日からひどい風邪にやられてしまって、

今はやっていますね.お大事に.
時間が許せば「睡眠に勝る療法なし」なんですけどね.なかなか.

> ました。テキストファイルを編集したような場合、Optionsに追加することで
> 帰ってくるようになりました。だけれどもこれ、監視フォルダのトップしか帰っ
> てこないんですね。更新されたファイル名まで得られるといいのですが…


確かに,このAPIではできないようです.
Vista以降ですと,新らしいインターフェイスがあるらしいです.
確認はしていませんが,できたとしても,Vista以降で,Delphi 2010
以降となってしまいますね.


[4222] Re15:plFolderWatcherについて返信 削除
2011/1/16 (日) 21:15:46 たてぐや
▼ Mr.XRAYさん
> 今はやっていますね.お大事に.
> 時間が許せば「睡眠に勝る療法なし」なんですけどね.なかなか.


 ありがとうございます。木曜日、起きたら頭はくらくらするし、身体はふら
つくしで休暇を取りました。金・土となんとかこなして今日日曜日は一日寝て
食べてまた寝るという自分的には許せない一日(何なん振りだろう…)を過ご
したらどうにか復活してきました。まだ少し咳が出るものの頭はクリアになっ
てきました。
 寒い日が続きます。みなさんもお気を付けくださいね。

[4220] Re13:plFolderWatcherについて返信 削除
2011/1/15 (土) 20:30:32 Sara
▼ Mr.XRAYさん こんばんは


 //ファイルやフォルダ名の変更等は同じイベントが2回以上くることがある
 //イベントや名前が前とおなじだった場合はOnChangeイベントに送らない
ここの判定なんですが、時間も取得して前回時間と今回時間がある程度離れて
いるようなら、イベントを起こしたほうが良いかと・・・

例えば、aというフォルダを監視中にその中のa1というテキストファイルを
編集して何度か保存を行った場合、最初の1回しかUpdateItemが発生しませんよね・・・

どうでしょう?

(間隔は1〜2秒程度で良いかな)


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82