|
秀まるおさん今日は、Iranoan です。
> 送受信の最中でも検索系コマンドは普通に使えるはず
取り敢えず、「普通にできる」ということは覚えておきます。
> 画面上でたしかにヒットしてるのに返り値が0であったということですかね?。
あまり自信はありませんが、そのように見えました。
・フォルダ A を以前開いたときは別のメール A-A をアクティブ
・A とは別のフォルダ B でマクロ実行
→A を開いて検索条件に該当するメール A-B がアクティブになっている
しかし、返り値が 0 だったときの処理 (アカウント全体、全てのアカウント
全体の検索) をしているようでした。
> だとしたら、そういう線でソースコードの見直しなどしてみたいと思います。
宜しくお願いします。
ただ再現したときは、POP サーバが込んでいたのか、応答に時間がかかった
いたので、それも関係するのやら。
実際の検索部分は、
<前半略>
if( !dllfunc( "ExecAt", ##main, "SelectFolder", $$account, $$folder
) )call Find $$1 + "subfolder=1, inmail=3", ##main;
else{
call Find $$1 + "subfolder=0, inmail=0", ##main;
if( !##return ){//該当メールが「範囲」から外れているときの処理
if( !dllfunc( "SetViewArea", 0 ) )goto Error;
call Find $$1 + "subfolder=0, inmail=0", ##main;
if( !##return )call Find $$1 + "subfolder=1, inmail=3", ##main;
}
}
<中略>
Find:
if( !dllfunc( "ExecAt", ##2, "SetFindPack", $$1 ) )goto Error;
if( !dllfunc( "ExecAt", ##2, "FindUpInclude" ) ){
if( !dllfunc( "ExecAt", ##2, "FindDown" ) )return 0;
}
return 1;
<以下略>
という要領ですが、該当メールがアクティブなのに、なぜ FindUpInclude の
時点で止まらないの??? 素直に
Find:
if( !dllfunc( "ExecAt", ##2, "SetFindPack", $$1 ) )goto Error;
if( dllfunc( "ExecAt", ##2, "FindUpInclude" ) )return 1;
if( dllfunc( "ExecAt", ##2, "FindDown" ) )return 1;
return 0;
とするべき???
因みにファイルに検索語 (Message-ID) の記録が残っていたので、今
「Message-ID 検索」をしてみましたが、問題なくヒットします。
|
|