全くの初心者です。No.00502
ニキー太 さん 99/04/21 22:24
 
ここでの初歩的な質問は場にそぐわないのかもしれまんが、お教えいただければ幸い
です。
初めてマクロをいじってるのですが、どうしてもわからない部分があります。下のよ
うに
連続した多くの置き換え処理をしたいのですが、処理の途中ですべての文字に任意の
半角
文字を挿入してから(文末のEOFまでいってから)、また置き換えの命令に戻りたい
のです
が方法がよくわかりません。
どうぞよろしくお願いします。


replaceall "い","ろ", regular;
replaceall "は","に", regular;
        ・
        ・
        ・
        ・
//---↑100行以上処理(記述済み)---

//---???ここから(質問内容)---
Label:
insert " "; //・・・・・半角文字の挿入
right;
goto Label; //・・・・・文末まで繰り返し
???    //・・・・・文末まで処理し終わったら下の処理へ戻る

//---???ここまで(質問内容)---

replaceall "201","202", regular;
replaceall "203","204", regular;
        ・
        ・
        ・
//---↑数行処理(記述済み)---
endmacro;

[ ]
RE:00502 全くの初心者です。No.00503
杉浦 まさき さん 99/04/22 00:44
 
ニキー太さん、はじめまして。
杉浦 まさき と申します。

>連続した多くの置き換え処理をしたいのですが、処理の途中ですべての文字に任意の
>半角
>文字を挿入してから(文末のEOFまでいってから)、また置き換えの命令に戻りたい
>のです
>が方法がよくわかりません。

right; の後に、現在のカーソル位置が [EOF] かどうかを判定して、
もしそうなら下の処理に移る、
ということであれば、その後の

goto Label;



if (code != -1) goto Label;

に変えればよいです。
#code というキーワードについては
 マクロヘルプの「式」->「内部的な値を表現するキーワード」
 ->「カーソル関連」
 を参照して下さい。


[ ]
RE:00503 全くの初心者です。No.00504
ニキー太 さん 99/04/22 08:52
 
>杉浦 まさき と申します。
>right; の後に、現在のカーソル位置が [EOF] かどうかを判定して、
>もしそうなら下の処理に移る、
>ということであれば、その後の
>goto Label;
>を
>if (code != -1) goto Label;
>に変えればよいです。

ありがとうございます。何故かそのままだとすべての文字が任意の半角文
字に置き換わってしまうので以下のようにしたらうまくいきました。
(理由はわかりません。)


gofiletop;
insert " ";
Label:
right;
insert " ";
if (code != -1) goto Label;


出来ましたら追加でお教え願いたいのですが、URLやメールアドレス、
タグを、上記の任意の半角文字挿入をさせないようにするにはどのような
記述がよいのでしょうか?基本的なヒントだけでも教えていただけると有
り難いです。

[ ]
RE:00504 全くの初心者です。No.00508
杉浦 まさき さん 99/04/23 00:27
 
ニキー太さん、こんばんは。
杉浦 まさき です。

>何故かそのままだとすべての文字が任意の半角文
>字に置き換わってしまうので以下のようにしたらうまくいきました。
>(理由はわかりません。)

う〜ん…なんで最初ので失敗するのかも、
直してうまく行く理由もさっぱりわかりませんです(^^;。
ちなみに家でも再現しないです。
#gofiletop がキーなのかなぁ…だとすると

gofiletop;
Label:
insert " ";
right;
if (code != -1) goto Label;

 でもうまくいくはずですが…??

>URLやメールアドレス、タグを、上記の任意の半角文字挿入を
>させないようにするにはどのような記述がよいのでしょうか?

う〜ん…前者2つは置いといて(^^;、
タグ(="<"と">"で囲まれた領域)の内部では
処理をしないようにするには、
以下の様な感じでいけるんじゃないでしょうかねぇ…。
#最近マクロ書いてないから自信なし(^^;。

gofiletop;
#in_tag = 0;  // タグの内部かどうかを表すフラグ
while (code != -1) { // [EOF] に到達するまで
    if (#in_tag == 0) { // タグの外
        if (code == 0x3C) #in_tag = 1; // タグの中に入る
        insert " "; // 半角文字を挿入
    } else { // タグの中
        if (code == 0x3E) #in_tag = 0; // タグの外に出る
    }
    right; // 次のカーソル位置へ
}
// 以下省略

#URL やメールアドレスの場合は…Ver.3.00 で導入された
 強調文字列関係のキーワードを使えばできそうですが…
 まだ勉強してないのでパスさせてもらいま〜す(^^;。


[ ]
RE:00508 全くの初心者です。No.00509
杉浦 まさき さん 99/04/23 00:40
 
ども、杉浦 まさき です。

さっきのマクロですが、コメントタグ(<!--, -->)のことを
すっかり忘れてましたね(^^;。
まぁ宿題(誰の(^^;?)ということにして
とりあえず逃げときます(^^;。


[ ]
RE:00509 全くの初心者です。No.00516
安久津 さん 99/04/27 00:25
 
ニキー太さん、杉浦さん、こんにちは、安久津といいます。

>まぁ宿題(誰の(^^;?)ということにして
>とりあえず逃げときます(^^;。
非力ながら、マクロ大魔人の後をリリーフします。
#しかし今年のベイスターズは弱い。

発言00508で、杉浦さん書く。
>#URL やメールアドレスの場合は…Ver.3.00 で導入された
> 強調文字列関係のキーワードを使えばできそうですが…
これでできます。

以下仮定。#まだ新レジストリ調べてないんです。σ(^^)も逃げる((( (  ( ^^)
[1]ニキー太さんは HTML ファイルを編集している。
[2]HTMLファイルで「Email、URLのカラー表示」を有効にしている。
[3]HTMLファイルで「コメント/文字定数のカラー表示」の「HTML」を選択している。

これらの3つの条件が揃っている場合には、
現在のカーソル位置が Email、URL、コメント、文字定数なのかどうかが、
分かります。#秀丸が認識したそれ、必ず正しいという保証はないです。

##colorcode = colorcode & 0x1F;
if( ##colorcode == 11 )
message "URL部分です";
else if(  ##colorcode == 12 )
message "Email部分です";
else if(  ##colorcode > 12 && ##colorcode < 16 )
message "HTMLタグの部分です";
else if(  ##colorcode == 20 )
message "文字定数部分です";
else if(  ##colorcode == 3 )
message "コメント部分です";

注意。
Email、URL、コメント、文字定数の中に、それらよりも優先順位の高い強調文字が
ある場合、上記だけでは正しい判定はできません。
この場合には、

config "y-";

で、一時的に強調表示を無効にしてから、colorcode を使って下さい。
colorcode の各値については、秀丸と同じフォルダにある hmcolor.txt を、
参照して下さい。#マクロヘルプにも同様の記述があります。

ではでは。

[ ]