新着リストの拡張 SetFindPack の使い方No.05577
ぱと さん 02/07/17 10:08
 
新着リスト機能を自分の必要なようにカスタマイズするには、SetFindPack 関数
のパラメーターを調整したマクロを作ればいいのだというご教示をひろさんから
いただきまして、いろいろ挑戦しております。

まず、鶴亀の再起動後も当日の送受信メール全てを簡単に参照できるように、
transmit フラグを調整しました。

#n = dllfunc( "SetFindPack", "flag=transmit=0日前-指定なし, subfolder=1" );

これは簡単です。次に、ダイレクトメールやMLを除去したいと思って、自分のア
ドレスをヘッダで検索する指定を行いたいのですが、こちらがよく判りません。

#n = dllfunc( "SetFindPack", "("xxx@def.com",target=header),flag=transmit=0
日前-指定なし, subfolder=1" );

としたのですが、「式がおかしいです」というエラーになってしまいます。コン
マやダブルコーテーション、括弧などの位置がおかしいのかなあと思って試行錯
誤したのですが、よく判りません。

どなたかご教示願えれば幸いです。

----
ぱと

[ ]
RE:05577 新着リストの拡張 SetFindPack No.05578
秀まるお さん 02/07/17 10:21
 
 文字列中に「"」を書きたい時は、「\"」と書かないとダメです。

loaddll "tkinfo.dll";
#n = dllfunc( "SetFindPack", "(\"xxx@def.com\",target=header),
flag=transmit=0日前-指定なし, subfolder=1" );

 と指定したらうまく動作しました。

 ちなみに既にご存じかもしれませんが、findpack文字列の指定方法で悩んだ時は、
「検索して一覧作成」で適当な条件を指定して一度検索させ、もう一度「検索して一
覧作成」のダイアログボックスを出して、左上のシステムメニューを表示させれば先
ほどの検索条件が分かります。

[ ]
RE:05577 新着リストの拡張 SetFindPack No.05579
たけのこ さん 02/07/17 10:22
 
たけのこです。

>#n = dllfunc( "SetFindPack", "("xxx@def.com",target=header),flag=transmit=0
>日前-指定なし, subfolder=1" );

文字列の一部として二重引用符を用いるときは、\記号でエスケープ(本来の意
味をはずすと云うこと)をしてやらなくてはなりません。で、ないと、マクロの
パーサはその二重引用符を『文字列のくくり』という特別な意味ととらえてしま
うからです。

"xxx@def.com"
   ↓
\"xxx@def.com\"

で、どうでしょう?

[ ]
RE:05578 新着リストの拡張 SetFindPack No.05580
ぱと さん 02/07/17 10:38
 
秀まるお さん

> 文字列中に「"」を書きたい時は、「\"」と書かないとダメです。
>
>loaddll "tkinfo.dll";
>#n = dllfunc( "SetFindPack", "(\"xxx@def.com\",target=header),
>flag=transmit=0日前-指定なし, subfolder=1" );
>
> と指定したらうまく動作しました。

ありがとうございます。マクロヘルプの SetFindPack の説明を読んで試してい
たのですが、こちらでは、検索文字列は「ダブルコーテーションで囲んだ検索文
字列」であるという記述がありました。実際にマクロで使う時には、マクロの
パーサにダブルコーテーション付きで文字列を渡すために、\" としなければい
けないということなのですね。ちょっとややこしいですが、一回覚えてしまえば
今後は間違わなくてすみそうです。

> ちなみに既にご存じかもしれませんが、findpack文字列の指定方法で悩んだ時は、
>「検索して一覧作成」で適当な条件を指定して一度検索させ、もう一度「検索して一
>覧作成」のダイアログボックスを出して、左上のシステムメニューを表示させれば先
>ほどの検索条件が分かります。

おお!これは凄いです。これがコピーできると言うことないのですが・・・

----
ぱと

[ ]
RE:05579 新着リストの拡張 SetFindPack No.05581
ぱと さん 02/07/17 10:46
 
たけのこ さん

ご教示ありがとうございます。

>"xxx@def.com"
>   ↓
>\"xxx@def.com\"

でうまくいったのですが、たけのこさんのご説明で一点不明な点がありました。

>文字列の一部として二重引用符を用いるときは、\記号でエスケープ(本来の意
>味をはずすと云うこと)をしてやらなくてはなりません。で、ないと、マクロの
>パーサはその二重引用符を『文字列のくくり』という特別な意味ととらえてしま
>うからです。

秀まるおさんのご説明でも、文字列中に " を用いる時には、\" としなければ駄
目であるということが書いてあったのですが、\ の機能が " の本来の意味を外
すということになるとすると、SetFindPack のパラメータの説明で、検索文字列
は "" でくくれと書いてあることとの兼ね合いはどのようなことになるんでしょ
うかね?

----
ぱと

[ ]
RE:05581 新着リストの拡張 SetFindPack No.05582
たけのこ さん 02/07/17 11:06
 
たけのこです。

>\ の機能が " の本来の意味を外
>すということになるとすると、SetFindPack のパラメータの説明で、検索文字列
>は "" でくくれと書いてあることとの兼ね合いはどのようなことになるんでしょ
>うかね?

二重引用符のマクロ中での本来の意味は、文字列のくくりです。

#n = dllfunc( "SetFindPack", "(\"xxx@def.com\",target=header),flag=
transmit=0日前-指定なし, subfolder=1" );

この例で文字列とされる部分は
SetFindPack
と、
("xxx@def.com",target=header),flag=transmit=0日前-指定なし, subfolder=1
ですね(エスケープされた文字は、単なる文字として文字列に取り込まれます)。
で、

#n = dllfunc( "SetFindPack", "("xxx@def.com",target=header),flag=
transmit=0日前-指定なし, subfolder=1" );

と、した場合はどうかといえば、
SetFindPack

(

,target=header),flag=transmit=0日前-指定なし, subfolder=1
です。
『"("xxx@def.com",target……』の部分で、二重引用符の本来の意味から開き
カッコだけが文字列と見なされ、続くメールアドレスは、パーサ的には訳のわか
らないもの……従って、『式がおかしいです』というエラーが導かれたわけです。

で、

>SetFindPack のパラメータの説明で、検索文字列
>は "" でくくれと書いてあることとの兼ね合いはどのようなことになるんでしょ
>うかね?

検索『文字列』ですから、文字列のくくりとしては二重引用符でくくらなければ
なりません。が、この文字列自体が、SetFindPackのパラメータ文字列中に存在
しますので、二重引用符はエスケープしてやらないと云うことです(面倒な言い
回しだな……)。
ちなみに、ヘルプを確認したら、例ではきちんとエスケープしていますね。

[ ]
RE:05582 新着リストの拡張 SetFindPack No.05583
ぱと さん 02/07/17 11:14
 
たけのこ さん

詳細なご説明ありがとうございました。

>ちなみに、ヘルプを確認したら、例ではきちんとエスケープしていますね。

そのとおりでした。

どうして SetFindPack などの部分も "SetFindPack"のように、ダブルコーテー
ションで囲む必要があるのかなあと思っていたのですが、たけのこさんのご説明
を読んで(半分くらいは)理解しました。今後マクロをいじりながら試行錯誤する
上で、貴重な指針を与えていただきました。どうもありがとうございました。

----
ぱと

[ ]
RE:05580 新着リストの拡張 SetFindPack No.05584
hi_sugar さん 02/07/17 12:27
 
ぱとさん、こんにちは。hi_sugarです。

>おお!これは凄いです。これがコピーできると言うことないのですが・・・

 私も以前、同じようなことをやりたいと思い、そのときは一度検索を実行し、
 GetFindPack関数を使って、検索条件を確認しては検索条件を固定したマクロを
作っていましたが、それも面倒になり、結局その辺の処理を一体化したマクロを
つくりました。需要がありそうなので今晩にでもライブラリィにアップロードし
ておきます。
 よかったらお試しください。(たぶん、ぱとさんが所望されている動作は実現
できてると思います。)
 

[ ]
RE:05584 新着リストの拡張 SetFindPack No.05585
ぱと さん 02/07/17 12:32
 
hi_sugar さん

> 私も以前、同じようなことをやりたいと思い、そのときは一度検索を実行し、
> GetFindPack関数を使って、検索条件を確認しては検索条件を固定したマクロを
>作っていましたが、それも面倒になり、結局その辺の処理を一体化したマクロを
>つくりました。需要がありそうなので今晩にでもライブラリィにアップロードし
>ておきます。
> よかったらお試しください。(たぶん、ぱとさんが所望されている動作は実現
>できてると思います。)

ありがとうございます。感謝します。楽しみにしております。

----
ぱと

[ ]