またマクロの(初歩的)質問ですNo.01653
Egg さん 09/02/19 22:04
 
Iranoan様に教えて頂いたマクロを元にほぼ同じようなマクロを作ったのですが・・・
また動作しません。
間違いをご指摘頂けないでしょうか。

//うまく動作しない
loaddll "tkinfo.dll";
if( dllfuncstr( "CurrentHeader", "Bcc" ) == "" )
 $s = dllfuncstr( "SetHeader", "Bcc" ,"");
else $s = dllfuncstr( "DeleteHeader", "Bcc" );


//これはOK
loaddll "tkinfo.dll";
if( dllfuncstr( "CurrentHeader", "X-TuruKame-KeitaiSend" ) == "" )
 $s = dllfuncstr( "SetHeader", "X-TuruKame-KeitaiSend", "1" );
else $s = dllfuncstr( "DeleteHeader", "X-TuruKame-KeitaiSend" );


[ ]
RE:01653 またマクロの(初歩的)質問ですNo.01654
Iranoan さん 09/02/19 23:32
 
 Egg さん今日は、Iranoan です。
> //うまく動作しない
> loaddll "tkinfo.dll";
> if( dllfuncstr( "CurrentHeader", "Bcc" ) == "" )
>  $s = dllfuncstr( "SetHeader", "Bcc" ,"");
> else $s = dllfuncstr( "DeleteHeader", "Bcc" );
 これがなぜ動作しないのが私も解りません。
 ひょっとすると仕様ではなく不具合かもしれませんので、それは秀まるおさ
んに聞かないと解りませんが、取り敢えず次のマクロで回避できそうです。
//------------------------------------------------------------
loaddll "tkinfo.dll";
if( dllfunc( "CountCurrentHeader", "Bcc" ) == 0 )
 $s = dllfuncstr( "SetHeader", "Bcc" ,"");
else $s = dllfuncstr( "DeleteHeader", "Bcc" );

[ ]
RE:01654 またマクロの(初歩的)質問ですNo.01655
K'zawa さん 09/02/20 01:37
 
Eggさん、Iranoanさん、こんにちは。
K'zawaです。

>> if( dllfuncstr( "CurrentHeader", "Bcc" ) == "" )

これは、「"Bcc"ヘッダの中身が空ならば」で、ヘッダそのもののあるなしでは
ありません。中身を書き入れた後ならば消え、空ならばそのまま。
うまく動いているほうも含め、"CountCurrentHeader"のほうが目的には
合っているでしょう。

[ ]
RE:01655 またマクロの(初歩的)質問ですNo.01656
Iranoan さん 09/02/20 02:14
 
 K'zawa さん今日は、Iranoan です。
> これは、「"Bcc"ヘッダの中身が空ならば」で、ヘッダそのもののあるなしでは
> ありません。
 御指摘ありがとございます。
 そもそも Bcc の場合は「空で無いときに本当に消してよいのか?」という問
題も有りますね。

> うまく動いているほうも含め、"CountCurrentHeader"のほうが目的には
> 合っているでしょう。
 う〜ん、どうなんでしょう。どちらが妥当との判断は難しい。理由は、
X-TuruKame-KeitaiSend ヘッダに 1 以外が書き込まれている場合どうなのか?
が解らない為です。私が予想するに、
if( val( dllfuncstr( "CurrentHeader", "X-TuruKame-KeitaiSend" ) ) )
  $s = dllfuncstr( "DeleteHeader", "X-TuruKame-KeitaiSend" );
else $s = dllfuncstr( "SetHeader", "X-TuruKame-KeitaiSend", "1" );
の様に、0, 0 以外で判断するのがもっとも正確だとは思うのですが。

[ ]
RE:01656 またマクロの(初歩的)質問ですNo.01657
K'zawa さん 09/02/20 09:04
 
Eggさん、Iranoanさん、こんにちは。
K'zawaです。

>> うまく動いているほうも含め、"CountCurrentHeader"のほうが目的には
>> 合っているでしょう。
> う〜ん、どうなんでしょう。どちらが妥当との判断は難しい。理由は、

そうですね。一応自己フォローしておくと
「単純なON/OFFが目的ならば、…」という意味でして、
前提が変れば、それにふさわしい条件判断をしなければならないですね。

> そもそも Bcc の場合は「空で無いときに本当に消してよいのか?」という問
>題も有りますね。

携帯のほうは、誤って消しても、たいしたことはないと思われますが、
bccは、追加した大量の宛先がぱあになってしまうかも知れませんね。

ヘッダがなければ追加
あっても空なら削除
そうでなければ確認

とした方が安全かも。(bccの場合)

[ ]
RE:01657 またマクロの(初歩的)質問ですNo.01658
Egg さん 09/02/20 13:28
 
Iranoan様またまたどうも有難う御座います!!!
CurrentHeader=="" を、
CountCurrentHeader==0
とする発想の柔軟性さすがです。

K'zawa様どうもです。
以前“改行(表示)ON/OFFマクロ”を作って頂いた事があり、
いまも便利に使わせて頂いてます。


以前秀丸殿に、後からBccを追加しても
From:
To:
Cc:
Bcc:
Subject:
の順に並ぶマクロを作って頂いた事があり、今回少し知恵がつき
そのマクロを追加だけでなく削除もできるよう改造できないかと
考えた次第です。
ただお二人の意見通りBccに宛先を追加した後にマクロを実行すると
消えてしまうのは少し怖いので、秀丸殿Bcc追加マクロは現状のまま
使う事にします。

どうも色々とお騒がせしました。
そしてどうも有難う御座います。

Egg

[ ]
RE:01658 またマクロの(初歩的)質問ですNo.01659
Egg さん 09/02/24 12:03
 
Iranoan様こんにちは

私などが僭越ですが、うまく動くようになりました。
------------------------------
loaddll "tkinfo.dll";
if( dllfunc( "CountCurrentHeader", "Bcc" ) == 0 )
 $s = dllfuncstr( "SetHeader", "Bcc" ,"");
else
if( dllfuncstr( "CurrentHeader", "Bcc" ) == "" )
 $s = dllfuncstr( "DeleteHeader", "Bcc" );
------------------------------

dllfuncstr( "CurrentHeader", "Bcc" )ですが、カウントがあっても
宛先等がなければ”空”と扱われるみたいです。


ちなみに・・・私個人の使い方なのでまあどうでもいい話ですが
上記に関連し次の2つのマクロをエディタ側で使うようになりました。
(内容はあまり理解できてないですが)

------------------------------
loaddll "tkinfo.dll";
//Bccの追加と整合(秀丸殿に作成頂いたマクロ)
if( dllfunc( "CountCurrentHeader", "Bcc" ) == 0 ){
$subj = dllfuncstr("CurrentHeader", "Subject");
$bcc = dllfuncstr("CurrentHeader", "Bcc");
#n = dllfunc("DeleteHeader", "Subject");
#n = dllfunc("SetHeader", "Bcc", $bcc);
#n = dllfunc("AddHeader", "Subject", $subj);
moveto 0, -999;
searchdown "^Bcc:", regular, nocasesense;
golineend;
}
else
if( dllfuncstr( "CurrentHeader", "Bcc" ) == "" )
 $s = dllfuncstr( "DeleteHeader", "Bcc" );

//自動折返しに改行コードを入れない処理(携帯対応)との整合
if( dllfuncstr( "CurrentHeader", "X-TuruKame-KeitaiSend" ) == "1" ) {
 $s = dllfuncstr( "DeleteHeader", "X-TuruKame-KeitaiSend" );
 $s = dllfuncstr( "SetHeader", "X-TuruKame-KeitaiSend", "1" );
}
------------------------------
//Iranoan様に作成頂いた、自動折返しに改行コードを入れないマクロ
loaddll "tkinfo.dll";
if( dllfuncstr( "CurrentHeader", "X-TuruKame-KeitaiSend" ) == "" ){
 $s = dllfuncstr( "SetHeader", "X-TuruKame-KeitaiSend", "1" );
}
else $s = dllfuncstr( "DeleteHeader", "X-TuruKame-KeitaiSend" );
------------------------------


どうも色々と有難う御座いました。

Egg

[ ]