hmmail672b1_signed.exeでマクロのエラーNo.01321
S.N.P. さん 17/04/21 11:08
 
hmmail672b1_signed.exeにすると、マクロのエラーが出てきます。これまでは普通に
使えていたのですが、たとえば「文字列中の「\」は「\\」と書く必要があります。
(ヘルプ参照)」のようなエラーメッセージが出て、「マクロの実行を中断します
か?」とあるので「いいえ」を押すと問題なくマクロが作動して使えます。670の正
規版に戻すと同じマクロを使ってもエラーは出ないので、なにか仕様が変わったので
しょうか。

[ ]
RE:01321 hmmail672b1_signed.exeでマクロNo.01322
S.N.P. さん 17/04/21 11:09
 
>hmmail672b1_signed.exeにすると、マクロのエラーが出てきます。これまでは普通
>に使えていたのですが、たとえば「文字列中の「\」は「\\」と書く必要があります。
>(ヘルプ参照)」のようなエラーメッセージが出て、「マクロの実行を中断します
>か?」とあるので「いいえ」を押すと問題なくマクロが作動して使えます。670の正
>規版に戻すと同じマクロを使ってもエラーは出ないので、なにか仕様が変わったの
>でしょうか。

[ ]
RE:01321 hmmail672b1_signed.exeでマクロNo.01323
秀まるお2 さん 17/04/21 11:28
 
 これは最新版の秀丸エディタでの仕様変更が秀丸メールにも反映されたことに
よる影響でして、一応、仕様ということになります。

 一応、そこのエラーメッセージの中にある「ヘルプ」ボタンを押していただけ
れば、詳しい経緯が出る手はずにはなってるんですが、秀丸エディタが最新版で
ないとうまく出ないかもしれません。

 とりあえず簡単にエラーを出さなくするためには、

 1.「設定 - 秀丸エディタの動作環境...」を実行する。
 2.「トラブル対策」のページを選択する。
 3.「その他のトラブル対策」ボタンを押す。
 4.「旧バージョンとの互換性」枠の中にある

    □ マクロで問題のある文法の警告を出さない

   をONにしてOKする。

 でいいです。それでエラーは出なくなります。

 ですが、実際にはマクロの中にバグというか、書き方的におかしいはずの部分
があるはずだと思うので、出来ればそこを直していただいた方がいいかとは思い
ます。

 例えば

    message "a\a";

 みたいな文があるなら、

    message "a\\a";

 のように直すような修正になります。エラーメッセージの中にマクロファイル
名と行番号も表示されてるので、それを見て、マクロの中のどの部分が該当する
か特定できると思います。

 直し方がよく分からない場合は、ここの会議室にマクロファイルの中身(の該
当しそうな部分)を書き込んでいただければ、こちらでお返事できます。

[ ]
RE:01323 hmmail672b1_signed.exeでマクロNo.01324
S.N.P. さん 17/04/21 11:47
 
秀まるお様、さっそくどうもありがとうございます。

エラーが出るのは次のマクロです。y.iida氏の「鶴亀メールメアド名前除去マクロve
r 0.02β」をちょっと勝手に変更させて頂いたものと記憶しています。

loaddll "tkinfo.dll";
$From = dllfuncstr("CurrentHeader","From");
$hagiwara = dllfuncstr("AccountFrom", "hagiwara");
$To = dllfuncstr("CurrentHeader","To");
$CC = dllfuncstr("CurrentHeader","CC");
$BCC = dllfuncstr("CurrentHeader","BCC");

if ($From == $hagiwara){goto TO;}
 else {
 call EmailOnly $From;
 $t = dllfuncstr("SetHeader","From",$$return);
 }

TO:
if ($To == ""){goto CC;}
 else {
 call EmailOnly $To;
 $t = dllfuncstr("SetHeader","To",$$return);
 }

CC:
if ($CC == ""){goto BCC;}
 else {
 call EmailOnly $CC;
 $c = dllfuncstr("SetHeader","CC",$$return);
 }

BCC:
if ($BCC == ""){goto END;}
 else {
 call EmailOnly $BCC;
 $b = dllfuncstr("SetHeader","BCC",$$return);
 }

END:
#n = dllfunc( "ClearUpdated" );
freedll;
endmacro;

//
EmailOnly:
 $$adr = $$1;
 ##n =dllfunc("CountEmailList", $$adr);
 ##i = 1;
 while( ##i <= ##n ) {
  ##j = ##i - 1;
  $$tmp = dllfuncstr( "GetEmailList", $$adr , ##j );
  $$adr_tbl[##i] = "";
  $$adr_tbl[##i] = dllfuncstr("SetEmailOnly",$$tmp );
  ##i = ##i + 1;
 }

 $$adr1 = "";
 ##i = 1;
 while( ##i <= ##n ) {
  if ( ##i != ##n ){
※   $$adr1= $$adr1 + $$adr_tbl[##i] + "\, ";
  }
  else {
   $$adr1= $$adr1 + $$adr_tbl[##i];
  }
  ##i = ##i + 1;
 }

return $$adr1;


エラーが出るのは、※印の行で、「\」は二つでないとダメだと言われます。よろし
くお願い申し上げます。

[ ]
RE:01324 hmmail672b1_signed.exeでマクロNo.01325
秀まるお2 さん 17/04/21 13:28
 
 そこは、逆に「\」を取って、

    $$adr1= $$adr1 + $$adr_tbl[##i] + ", ";

 とするのが正しいような気がします。

 オプションをいじるよりも、とりあえずそこだけ直していただくのがいいと思
います。

[ ]
RE:01325 hmmail672b1_signed.exeでマクロNo.01326
S.N.P. さん 17/04/21 13:44
 
さっそくありがとうございます。
御指示のように直しましたら、今のところエラーが出なくなりました。どうもありが
とうございました。

[ ]