マクロがおかしくなりましたNo.35542
mig さん 17/01/16 16:29
 
こんにちは。

 秀丸ver.8.67(64bit版)を使用しています。
 設定の64bit版で32bit版との互換性は両方ともチェック入れています。

 今日、久しぶりにマクロを動かしたら、エラーが出てしまうことに気付きました。

charcount.macでは、
---ここから---
マクロエラー:キーワードや変数などが連続して記述されています。
マクロの修正をお勧めします。
(誤りの例:#a = #b #c;)

ファイル名:
D:\documents\hidemaru\charcount.mac

問題の箇所の内容(変換した内容):
 if( dllfunc( "NEWDLGPAGE" , "page2" , 40 ) == 0 || dllfunc( "NEWCONTROL" ,
"rdbtn" , "rd1@page2" , "1文字として数える" ) == 0 || dllfunc( "SETCTRLNOTI
FY" , "" , "21" ) == 0 || dllfunc( "SETCTRLSTATE" , "" , $w1 ) == 0 || dllfu
nc( "NEWCONTROL" , "rdbtn" , "rd2@page2" , "2文字として数える" ) == 0 || dl
lfunc( "SETCTRLNOTIFY" , "" , "22" ) == 0 || dllfunc( "SETCTRLSTATE" , "" ,
$w2 ) == 0 dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0
 || dllfunc( "SETCTRLNOTIFY" , "" , "23" ) == 0 || dllfunc( "SETCTRLSTATE" ,
 "" , $w3 ) == 0 )  {
  goto MAKEDLG_ERROR;


詳しくはヘルプを参照ください。
---ここまで---

andgrep.macでは、
---ここから---
マクロエラー:キーワードや変数などが連続して記述されています。
マクロの修正をお勧めします。
(誤りの例:#a = #b #c;)

ファイル名:
D:\documents\hidemaru\charcount.mac

問題の箇所の内容(変換した内容):
 if( dllfunc( "NEWDLGPAGE" , "page2" , 40 ) == 0 || dllfunc( "NEWCONTROL" ,
"rdbtn" , "rd1@page2" , "1文字として数える" ) == 0 || dllfunc( "SETCTRLNOTI
FY" , "" , "21" ) == 0 || dllfunc( "SETCTRLSTATE" , "" , $w1 ) == 0 || dllfu
nc( "NEWCONTROL" , "rdbtn" , "rd2@page2" , "2文字として数える" ) == 0 || dl
lfunc( "SETCTRLNOTIFY" , "" , "22" ) == 0 || dllfunc( "SETCTRLSTATE" , "" ,
$w2 ) == 0 dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0
 || dllfunc( "SETCTRLNOTIFY" , "" , "23" ) == 0 || dllfunc( "SETCTRLSTATE" ,
 "" , $w3 ) == 0 )  {
  goto MAKEDLG_ERROR;


詳しくはヘルプを参照ください。
AndGrep.mac(55): 文字列中の「\」は「\\」と書く必要があります。
(ヘルプ参照)

該当の文字: \0

マクロの実行を中断しますか?
---ここまで---

と出ます。果たして、ここにエラー・メッセージを載せてよいかどうか迷いましたが、
よろしくない場合は、ご指摘下さい。

 マクロについては素人なもので、さっぱりわかりません。
 お手数をおかけしますが、アドバイス頂けましたら幸いです。

 取り急ぎです。

[ ]
RE:35542 マクロがおかしくなりましたNo.35543
秀丸担当 さん 17/01/16 17:15
 

V8.67でのこの警告は、マクロの書き方として適切ではない点がある場合に表示
しています。
以前は、適切ではなくても、警告やエラーを出さずにそのまま無理矢理実行して
いました。

マクロの内容についてよくわからない場合、設定を変えることで警告を出さずに
従来通り実行することができます。
[その他]→[動作環境]→[トラブル対策]→[その他のトラブル対策]にある「マク
ロで問題のある文法の警告を出さない」をONにすると従来通りになります。


もしマクロの内容について把握されていて修正される場合は、「キーワードや変
数などが連続して記述されています」の警告については、

  dllfunc( "SETCTRLSTATE" , "" , $w2 ) == 0
  dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0 ||

のようになっているところ、間に「||」が抜けていると思うので、

  dllfunc( "SETCTRLSTATE" , "" , $w2 ) == 0 ||
  dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0 ||

というようにするといいと思います。


『文字列中の「\」は「\\」と書く必要があります』の警告については、警告の
内容からはどう修正するべきかはわかりません。
"\0"と書かれているところがあるはずで、これは"0"と書くか、"\\0"の書くか、
どちらかが正解です。
従来通りおかしいものをおかしいまま無理矢理続行するのと同等にするとしたら、
"0"とするのが従来と同じになります。

[ ]
RE:35543 マクロがおかしくなりましたNo.35544
でるもんたいいじま さん 17/01/16 17:56
 
こんにちは。秀丸ユーザのでるもんた・いいじまです。
担当さん、おつかれさまです。

> マクロの内容についてよくわからない場合、設定を変えることで警告を
> 出さずに従来通り実行することができます。
> [その他]→[動作環境]→[トラブル対策]→[その他のトラブル対策]にある
> 「マクロで問題のある文法の警告を出さない」をONにすると従来通りに
> なります。

うーむ、最初にこれをお奨めするのは私としてはちょっと気が引けるのですが…。

この方法は、どうしてもうまくいかない場合の最後の手段と割り切ったほうが
いいです。当座はこれで回避できるとしても、作者さんから正式に修正版が
提供されたら、このチェックはOFFに戻しておいてください。

☆ ☆ ☆

> 「キーワードや変数などが連続して記述されています」の警告については、
>  dllfunc( "SETCTRLSTATE" , "" , $w2 ) == 0
>  dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0 ||
> のようになっているところ、間に「||」が抜けていると思うので、
>  dllfunc( "SETCTRLSTATE" , "" , $w2 ) == 0 ||
>  dllfunc( "NEWCONTROL" , "rdbtn" , "rd3@page2" , "数えない" ) == 0 ||
> というようにするといいと思います。

このマクロは、ここ↓のやつですね。
http://hide.maruo.co.jp/lib/macro/charcount.html

いまマクロライブラリに上がっているマクロを見てみると、
  109: dllfunc("SETCTRLNOTIFY","","22") == 0 ||
  110: dllfunc("SETCTRLSTATE","",$w2) == 0
  111: dllfunc("NEWCONTROL","rdbtn","rd3@page2","数えない") == 0 ||
のように、110行目の末尾にだけ「||」が抜けています。ここに書き足してください。

「|」の文字は、普通の日本語キーボードなら Shift+¥ で入力できます。
英語キーボードなら Shift+\ のはずです。

☆ ☆ ☆

> 『文字列中の「\」は「\\」と書く必要があります』の警告については、
> 警告の内容からはどう修正するべきかはわかりません。

こちらは、ファイル名からしてこれ↓
http://hide.maruo.co.jp/lib/macro/agrep101.html
かなあと思ったのですが、どうも違うようです。

秀丸用のマクロは公式のマクロライブラリ以外でも色々と配布されているので、
どこから入手したものなのか、それが分からなければマクロファイルの中に
作者の名前が書いてあればその作者の名前、といった情報があると解決の
近道になります。

> "\0"と書かれているところがあるはずで、これは"0"と書くか、
> "\\0"の書くか、どちらかが正解です。
> 従来通りおかしいものをおかしいまま無理矢理続行するのと同等にすると
> したら、"0"とするのが従来と同じになります。

これはどちらなのか本当にわかりません。
たぶん、作者の意図は "\\0" だと思います。
(が、ミスのせいで "0" と解釈されてしまっている。)
両方試してみて、どちらで期待通りに動くか試すしかないと思います。

どちらなのかわからないようであれば、どこから入手したマクロなのかを調べて
(マクロファイルを普通に秀丸で開くと作者名などが分かると思います)、
そのダウンロード元URLを再度投稿してみてください。

☆ ☆ ☆

> 果たして、ここにエラー・メッセージを載せてよいかどうか迷いましたが、
> よろしくない場合は、ご指摘下さい。
>
> マクロについては素人なもので、さっぱりわかりません。
> お手数をおかけしますが、アドバイス頂けましたら幸いです。

この程度の長さなら、エラーメッセージを投げても問題ない、というか、
きっちりメッセージをコピペしてくれたほうがのいいと思います。
#Dump.txtの全文を投げられてしまうと、個人的にはちょっと辛いですが。

[ ]
RE:35543 マクロがおかしくなりましたNo.35545
mig さん 17/01/16 18:06
 
早速のお返事ありがとうございました。

>  dllfunc( "SETCTRLSTATE" , "" , $w2 ) == 0
こちらについては、修正したところ、ちゃんと動きました。ありがとうございました。

>"\0"と書かれているところがあるはずで、これは"0"と書くか、"\\0"の書
 こちらは、あるにはあったのですが、
ー--ここから---
        $search = dllfuncstr("ReplaceRegular", "[+.|?*()\\[\\]\\\\$\"-]", $s
earch, 0, "\\\\\\\0", 2);
---ここまで---

となっており、よく分からずに触るのも恐いので、動作環境の方を変更しました。

 無事動きました。ありがとうございました。
 いつもご丁寧にありがとうございます。

[ ]
RE:35542 マクロがおかしくなりましたNo.35546
colder さん 17/01/16 18:10
 
colderです。
>andgrep.mac
これは山紫水明さんの「スペース区切りで複数語GREPができるマクロ」でしょうか?
これならこの問題が修正されたバージョンが出ています。
http://hide.maruo.co.jp/lib/macro/andgrep203.html

[ ]
RE:35546 マクロがおかしくなりましたNo.35547
mig さん 17/01/17 10:11
 
ありがとうございます。
気付きませんでした。早速差し替えました。

山紫水明さんのHPには連絡はこちらまでとありますので、この場を借りて御礼申し上
げます。
また、マクロの179行めのverが2.02のままでした。重箱の隅をつつくようで申し訳あ
りませんが、ご報告まで。

いつか、アドバイスを受ける側から脱却できればと思っています。

取り急ぎ、御礼のみにて。

[ ]
RE:35544 マクロがおかしくなりましたNo.35548
mig さん 17/01/17 10:14
 
いろいろとご指摘ありがとうございました。

無事解決出来ました。重ねて御礼申し上げます。

取り急ぎです。

[ ]