|
皆さん今晩は、CXYZです。
以前こちらで相談させていただいた広告捜索用正規表現
http://www.maruo.co.jp/hidesoft/4/x04252_.html#4252
を、拙いマクロに取り込んで動かせるようになってからずいぶん時間がたってし
まいました。
ずっと、その広告部分を選択し削除させることができず、うなり続けていまし
た。しかし、最近やっと「検索での表示:範囲選択」にしなければならないとい
うのを見過ごしていたことに気づき、そのように設定を変更して、以下のマクロ
を下の広告に試しています。
-------------- ここから --------------
loaddll"tkinfo.dll"; //dllをロード
// メール一覧上でしか動けません。
gofiletop; // メール先頭へ移動
#noa=0; // 広告の検出数。偶数で1件。
$sp1="^[^A-Za-z0-9ぁ-んァ-ヶ亜-\xFC\x4B]+(pr|ad)+[^A-Za-z0-9ぁ-んァ-ヶ亜
-\xFC\x4B]+$";
$sp2="^(?<=[\x20\x81\x40]?)[^A-Za-z0-9ぁ-んァ-ヶ亜-\xFC\x4B\x20\x81\x40]+[^A
-Za-z0-9ぁ-んァ-ヶ亜-
\xFC\x4B\x20\x81\x40]+$";
$URL="(http://|ww[w0-9]+|[0-9]{3}\.([0-9]+\.+))"; // トリガー文字 | IPア
ドレス
#n=dllfunc("BeginEditMail");
#ROS=readonly; // read onlyの現在の値
#BMS=browsemode; // browsemodeの現在の値
if (#ROS!=1) {
readonlyswitch;
}
if (#BMS!=1) {
browsemodeswitch;
}
if (#ROS!=0&&#BMS!=0) {
message "メールの書き換えを可能にしました。";
}
tsr: // top searching routine
message "PRからPRまでが異様に長くても今のところ対策を講じていません。";
searchdown2 $sp1 ,nocasesense, regular;
#ITSS=result; // Is top search successed
if (#ITSS==0)
{
if (#noa>0)
{
message "これ以上見つかりません。";
message str((#noa/2))+"件の広告が見つかりました。";
endmacro;
}
message "広告は見つかりませんでした。";
endmacro;
}
else // 以下は検索成功時の処理
{
#noa=#noa+1;
message "広告の先頭部を検出。";
moveto 0,y;
message "カーソルを"+str(y)+"行目の"+str(x)+"枡目に移動";
#asl=y; // ad start line
searchdown $sp1 ,nocasesense ,regular; // 同一の枠検索
#IESS=result; // is end search successed
if (#IESS==0)
{
message "同じ枠は見つかりませんでした。URL行に近い記号だけの行を検索しま
す。";
searchdown $URL ,nocasesense ,regular; // 下枠検索に備えてURL検索
#IUSS=result; // is URL search successed
if (#IUSS==0)
{
message "URL検出失敗。";
endmacro;
}
else // URLが見つかった場合は
{
moveto 0,y;
#URLp=y;
message str(#URLp)+"行目にURLが見つかりました。";
searchdown $sp2 ,nocasesense ,regular; // その次の記号だけの行を検索
#IESS2=result; // is end search successed
if (#IESS2==0)
{
message "記号だけの行は存在しませんでした。";
endmacro;
}
else
{
message "終了枠と思しき部分を発見しました。";
#noa=#noa+1;
}}}
else
{
#noa=#noa+1;
moveto 0,y+1;
#eal=y; // end ad line
$ad_content=gettext(0,#asl,0,#eal);
message str((#eal-#asl))+"行を広告と判断。";
message "内容は以下の通りです。\n"+$ad_content;
moveto 0,#asl;
beginsel;
moveto 0,#eal;
// endsel; // 在っても結果に影響なし
delete;
#SEM=dllfunc("SaveEditMail",1,1);
message "書き換え結果コードは"+str(#SEM)+"です。";
moveto 0,#eal; // 削除が働かないようなので、強引ながら今のところこれで凌
ぐ
goto tsr;
}}
-------------- ここまで --------------
------------- 広告ここから ---------------
┏ ┏ ┏ ┏ ┏ ┏ ┏ [★]100歳まで長生きしても安心!
保 障 は 一 生 涯 ! [★]保険料最大50%割引って?
┛ ┛ ┛ ┛ ┛ ┛ ┛ [★]1泊2日入院から保障!
■安田火災ひまわり生命がご提供する、終身医療保険のベストセラーです。
資料のご請求は http://211.10.20.135/a/a.cgi?k03350Am00158
========================================================[ ▲PR ]====
------------- 広告ここまで ---------------
まともにヒットしているように見え、かつ削除もできている(SaveEditMailの
返り値が1なので)と思うのですが、何度試してもメールに変更が加わりません。
フォーラムからメール本文を削除するマクロを検索してみるのですが、自分の
物との違いが(ソースがきれいであるということの他に)見つけられません。
大変見苦しいソースなのですが、よろしければ、なぜ削除できないのかをお教
えいただけないでしょうか。
## 初めからサブルーチンを使った方法で書いておけば、すっきりさせられてよ
かったんでしょうが、マクロらしいマクロへの初挑戦だったので挫折しました。
(苦笑)
|
|