(発言者削除)No.04423
matsue さん 04/08/04 19:48
 


[ ]
RE:04423 算用数字から漢数字への変換No.04424
matsue さん 04/08/04 19:51
 
算用数字を漢数字に直せという編集者からの注文を受け,マクロの世界に足を踏み入
れました。
白雲斎さんのマクロをさっそくファイルに作り,実行したところ,即,「18 文法エ
ラー」と出ます。バージョンが変わって,エラーになるのでしょうか?この18番のエ
ラーとは何でしょうか?

[ ]
RE:04424 算用数字から漢数字への変換No.04425
白雲斎 さん 04/08/05 00:23
 
白雲斎と申します。

「秀丸 Ver4.10」で実行してみましたが、エラーなく実行されました。
 ※ 3.19, 4.0x でも大丈夫なはずです。

『macroname(18): 文法エラー』

のメッセージは、「18行目付近の文法が解釈できない」との意味です。
以下のことを確認してください。

  1). マクロ文は正確にコピー、貼り付けされている?
    「マクロ ここから」の下行から、「マクロ ここまで」の上行まで
    がマクロ文です。
  2). “hidesoft.4:04188”で修正された部分を、間違いなく置き換えてい
    る?
  3). 何らかの修正を加えているなら、修正しないバージョンで実行する。
    または、その部分を提示する。

念のため、修正されたマクロ全文を最後に記しておきます。
作成済みのマクロ・ファイルを、ここで示したマクロ文と置き換えてもらうの
が、解決への早道かもしれません。


// マクロ ここから -------------------
$sb = searchbuffer;
#so = searchoption;

$zn[0] = "〇";
$zn[1] = "一";
$zn[2] = "二";
$zn[3] = "三";
$zn[4] = "四";
$zn[5] = "五";
$zn[6] = "六";
$zn[7] = "七";
$zn[8] = "八";
$zn[9] = "九";

disabledraw;
gofiletop;
searchdown2 "[0-90-9]+", regular;
while( result )
{
    tohankaku;
    #tx = seltopx;
    #ty = seltopy;
    #ex = selendx;
    #ey = selendy;
    $buff = gettext(#tx, #ty, #ex, #ey);
    escape; // 念のため
    if( strlen($buff) == 2 ) call toZen2c $buff;
    else call toZen $buff;
    beginsel;
    moveto #ex, #ey;
    insert $$return;
    finddown;
}
gofiletop;
enabledraw;
setsearch $sb, #so;
endmacro;

toZen:
    $$n = "";
    ##l = strlen($$1);
    ##i = 0;
    while( ##i < ##l )
    {
        $$n = $$n + $zn[val( midstr($$1, ##i, 1) )];
        ##i = ##i + 1;
    }
return $$n;

toZen2c:
    if( $$1 == "10" ) return "十";
    ##ln = val(leftstr($$1, 1));
    ##rn = val(rightstr($$1, 1));
    if( ##ln == 1 ) return "十" + $zn[##rn];
    else if( ##ln == 0 ) return $zn[##ln] + $zn[##rn];
    else if( ##rn == 0 ) return $zn[##ln] + "十";
return $zn[##ln] + "十" + $zn[##rn];
// マクロ ここまで -------------------

__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]
RE:04425 算用数字から漢数字への変換No.04426
白雲斎 さん 04/08/05 00:42
 
白雲斎と申します。

読み返してみると、「修正」と言う言葉が乱立して、意味が伝わりにくいのでは
ないかと反省しております。で、

>  3). 何らかの修正を加えているなら、修正しないバージョンで実行する。
>    または、その部分を提示する。

は以下と読み替えてください。

  3). 独自の修正を加えているなら、修正しないバージョンで実行する。
    または、その部分を提示する。

また、

>念のため、修正されたマクロ全文を最後に記しておきます。

は以下と読み替えてください。

念のため、マクロ全文を最後に記しておきます。


__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]
RE:04426 算用数字から漢数字への変換No.04427
matsue さん 04/08/05 17:02
 
さっそくのコメントありがとうございます。予想外の早さで驚きました。
18行目は以下の行でした。

searchdown2 "[0-90-9]+", regular;

半角の0から9または全角の0から9があるか?というようなことですよね。
なお,秀丸のバージョンは3.01でした。
このバージョンでわりに満足しているのですが。



[ ]
RE:04427 算用数字から漢数字への変換No.04428
白雲斎 さん 04/08/05 18:02
 
白雲斎と申します。

“3.01”と言うバージョンがどのようなものであったかと言う記憶が、私には
ありません。
少なくとも、「安定した古いバージョンはこちら」と謳われている“3.19”も
しくは“4.07”を使用してください。このバージョンなら、エラーなくマクロ
を実行できるはずです。(バージョンアップ料金は不要だし・・・)

“3.01”と言うバージョンにこだわるのなら、今回のマクロ使用は諦めてくだ
さい。例えば、『“3.01”で問題なく実行できるようにするにはどうすれば良
い?』と質問されても、私は対応できません。

__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]
RE:04428 算用数字から漢数字への変換No.04430
ENCODINGSHIFTJIS さん 04/08/06 09:14
 
メニュー>マクロ>マクロヘルプ>検索系文>
searchdown2 下方向検索(その2)
が ver.3.01 にあるか確認します。

無ければ
searchdown2 "[0-90-9]+", regular;


left; // カーソルは行に固着しないと仮定する。
searchdown "[0-90-9]+", regular;

の2行に書き換えます、あたり?
 

[ ]
RE:04427 算用数字から漢数字への変換No.04432
M.D.S.-Toy さん 04/08/06 13:16
 
>さっそくのコメントありがとうございます。予想外の早さで驚きました。
>18行目は以下の行でした。
>
>searchdown2 "[0-90-9]+", regular;
>
>半角の0から9または全角の0から9があるか?というようなことですよね。
>なお,秀丸のバージョンは3.01でした。
>このバージョンでわりに満足しているのですが。
>
>


http://hide.maruo.co.jp/software/hidemaruhist_v3.html
上記の改版履歴によれば、searchdown2 のサポートは Ver.3.11 からのようです。
というわけで、あとは No.4430 の ENCODINGSHIFTJIS さんの書き込みを参照で。


# マクロの使用が前提ならバージョンは新しくしておいたほうが
# こういう問題での紛れが少なくて済むと思います。

[ ]
RE:04430 算用数字から漢数字への変換No.04433
白雲斎 さん 04/08/06 13:32
 
白雲斎と申します。

ENCODINGSHIFTJISさん、助け舟ありがとうございます。
多分“あたり”だと思います。改版履歴によると、searchdown2文が追加された
のは“3.11”となっていました。
で、searchdown2文を使わないものを掲載しました。秀丸をバージョンアップす
るつもりがないのであれば、一度試して欲しいです。

※“3.01”の使用では、searchdown2文と同様のエラーとなる要素が他にあるか
 もしれません。そうなった場合、これ以上のお付き合いは出来ません。
 ご自分でHELPを見るなどして解決して欲しいです。


// マクロ ここから -------------------
$sb = searchbuffer;
#so = searchoption;

$zn[0] = "〇";
$zn[1] = "一";
$zn[2] = "二";
$zn[3] = "三";
$zn[4] = "四";
$zn[5] = "五";
$zn[6] = "六";
$zn[7] = "七";
$zn[8] = "八";
$zn[9] = "九";

disabledraw;
gofiletop;
insertfix "\n";
searchdown "[0-90-9]+", regular;
while( result )
{
    tohankaku;
    #tx = seltopx;
    #ty = seltopy;
    #ex = selendx;
    #ey = selendy;
    $buff = gettext(#tx, #ty, #ex, #ey);
    escape; // 念のため
    if( strlen($buff) == 2 ) call toZen2c $buff;
    else call toZen $buff;
    beginsel;
    moveto #ex, #ey;
    insert $$return;
    finddown;
}
gofiletop;
delete;
enabledraw;
setsearch $sb, #so;
endmacro;

toZen:
    $$n = "";
    ##l = strlen($$1);
    ##i = 0;
    while( ##i < ##l )
    {
        $$n = $$n + $zn[val( midstr($$1, ##i, 1) )];
        ##i = ##i + 1;
    }
return $$n;

toZen2c:
    if( $$1 == "10" ) return "十";
    ##ln = val(leftstr($$1, 1));
    ##rn = val(rightstr($$1, 1));
    if( ##ln == 1 ) return "十" + $zn[##rn];
    else if( ##ln == 0 ) return $zn[##ln] + $zn[##rn];
    else if( ##rn == 0 ) return $zn[##ln] + "十";
return $zn[##ln] + "十" + $zn[##rn];
// マクロ ここまで -------------------

__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]
RE:04433 算用数字から漢数字への変換No.04434
matsue さん 04/08/06 19:13
 
白雲斎さん ほかの方々 ありがとうございます。
バージョン4.07に変えてみました。
文法エラーは起こりませんが,結果はまったく不可解なもので,
意気消沈しております。白雲斎さんの新旧どちらのマクロも
ほぼ同じようです。
たとえば,1という数字1つで実行させると何も起こらず,
1が2つあると数字は1つ消えます。......
私のやり方が,どこか根本的に間違っているのでしょうか。
ごく簡単なマクロを記録し,登録し,実行させてみるとうまく行きます。
日常でVBAは使っていますが,まだ秀丸のマクロは十分理解できていません。
そろそろ撤退すべきかとも考えています。


[ ]
RE:04434 算用数字から漢数字への変換No.04435
白雲斎 さん 04/08/06 21:44
 
白雲斎と申します。

メニューの「その他」→「動作環境」→「検索」にある「検索での表示」が
「点滅表示」になっていませんか?

ここの設定を「範囲選択」にして問題があるか試して欲しいです。

●問題がなければ、

    『設定を「範囲選択」にして、以前のマクロを使用する。』
    か、
    『設定は「点滅表示」で、末尾のマクロを使用する。』
    でどうでしょう。

●問題があれば、

    ・・・どうすれば良いのか分かりません。


// マクロ ここから -------------------
// 実行後の中断はESCキー
$sb = searchbuffer;
#so = searchoption;

$zn[0] = "〇";
$zn[1] = "一";
$zn[2] = "二";
$zn[3] = "三";
$zn[4] = "四";
$zn[5] = "五";
$zn[6] = "六";
$zn[7] = "七";
$zn[8] = "八";
$zn[9] = "九";

disablebreak; // レジストリを書き換えるので、マクロ中断を禁止する。

disabledraw;
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#selectFound = getregnum("SelectFound");
if( !#selectFound )
{
    writeregnum "SelectFound", 1;
    envchanged;
}
closereg;

gofiletop;
searchdown2 "[0-90-9]+", regular;
while( result )
{
    if( iskeydown(0x1B) )
    {
        question "マクロを中断しますか?";
        if( result ) goto MEND;
    }
    tohankaku;
    #tx = seltopx;
    #ty = seltopy;
    #ex = selendx;
    #ey = selendy;
    $buff = gettext(#tx, #ty, #ex, #ey);
    escape; // 念のため
    if( strlen($buff) == 2 ) call toZen2c $buff;
    else call toZen $buff;
    beginsel;
    moveto #ex, #ey;
    insert $$return;
    finddown;
}
gofiletop;
MEND:
if( !#selectFound )
{
    openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
    writeregnum "SelectFound", #selectFound;
    envchanged;
    closereg;
}
enabledraw;
setsearch $sb, #so;
endmacro;

toZen:
    $$n = "";
    ##l = strlen($$1);
    ##i = 0;
    while( ##i < ##l )
    {
        $$n = $$n + $zn[val( midstr($$1, ##i, 1) )];
        ##i = ##i + 1;
    }
return $$n;

toZen2c:
    if( $$1 == "10" ) return "十";
    ##ln = val(leftstr($$1, 1));
    ##rn = val(rightstr($$1, 1));
    if( ##ln == 1 ) return "十" + $zn[##rn];
    else if( ##ln == 0 ) return $zn[##ln] + $zn[##rn];
    else if( ##rn == 0 ) return $zn[##ln] + "十";
return $zn[##ln] + "十" + $zn[##rn];
// マクロ ここまで -------------------
__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]
RE:04435 選択範囲No.04437
matsue さん 04/08/07 16:01
 
白雲斎さん
ありがとうございます。
たしかに
>メニューの「その他」→「動作環境」→「検索」にある「検索での表示」が
>「点滅表示」になっていませんか?

なっていました。

>ここの設定を「範囲選択」にして問題があるか試して欲しいです。
>
>●問題がなければ、
>
>    『設定を「範囲選択」にして、以前のマクロを使用する。』
>    か、

問題があるかどうかわかりませんが,これでうまくいきました!
末尾のマクロでもうまく行きました。

>    『設定は「点滅表示」で、末尾のマクロを使用する。』
>    でどうでしょう。

たしかに,末尾のマクロではうまく行きました。しかし,前のマクロでは,うまくい
きません。
以上,ご報告します。

[ ]
RE:04437 選択範囲No.04438
白雲斎 さん 04/08/08 23:04
 
白雲斎と申します。

>> ここの設定を「範囲選択」にして問題があるか試して欲しいです。
>
> 問題があるかどうかわかりませんが,これでうまくいきました!
> 末尾のマクロでもうまく行きました。

問題は「点滅表示」設定のようです。
この設定を元に戻していないのなら、好みの設定に戻してください。
そして、前回(hidesoft.4:04435)のマクロを使用してください。
前回のマクロでは、「点滅表示/範囲選択」の違いを考慮された作りになって
います。

__________________________________________________
GANBARE! NIPPON!
Yahoo! JAPAN JOC OFFICIAL INTERNET PORTAL SITE
http://mail.ganbare-nippon.yahoo.co.jp/

[ ]