(発言者削除)No.07885
山紫水明 さん 01/03/08 10:55
 


[ ]
RE:07885 正規表現の「.」が誤認識No.07890
安久津 さん 01/03/08 14:46
 
こんにちは山紫水明さん、安久津です。

>    replaceup ".\\f.", "\\0@\\1", regular;
>    while( result ) findup;
>の部分は,
>    while( result ) replaceup ".\\f.", "\\0@\\1", regular;
>と書いてもいいですよね。
ダメです。(^^;)

> 私はこれまでこういう書き方をしていましたが,何か区別はありますか。
最初の result を 非 0 にセットするためです。

では。
#もう気づいていると思うけど。

[ ]
RE:07885 正規表現の「.」が誤認識No.07891
TAKA さん 01/03/08 15:01
 
TAKA です。

> 前回のマクロの
>    replaceup ".\\f.", "\\0@\\1", regular;
>    while( result ) findup;
>の部分は,
>    while( result ) replaceup ".\\f.", "\\0@\\1", regular;
>と書いてもいいですよね。
> 私はこれまでこういう書き方をしていましたが,何か区別はありますか。

マクロ講座になりそうですが、すぐに終わると思いますので、こち
らのフォーラムで引き続きレスをつけさせてもらいます。

厳密に言えば、だめです。
resultキーワードは、基本的には直前に行った命令の結果を返すこ
とになっています。
whileの直前に「result」の値が「false」になっている可能性があ
りますので、そのような場合に動作しません。
メンテとかで、whileの直前に命令を入れた場合などは、気をつけ
る必要があります。
絶対に「true」になっていると保証があるなら、問題はありません
が。
ちなみに、マクロ実行直後は、「true」になっていました。

以下のマクロで、厳密に言えば、だめなことを確認できます。
//-----------------------------------------
    gofileend;
    down; // ここで強引にfalseにさせる。(テスト用のゴミ)
    while( result ) replaceup ".\\f.", "\\0@\\1", regular;
    endmacro;
//-----------------------------------------
「down」出来ないので、「result」が「false」になり、置換され
ません。

では、変わりに
//-----------------------------------------
    gofileend;
    down; // ここで強引にfalseにさせる。(テスト用のゴミ)
    replaceup ".\\f.", "\\0@\\1", regular;
    while( result ) replaceup ".\\f.", "\\0@\\1", regular;
    endmacro;
//-----------------------------------------
と書けば動くかというと、動きますが、検索条件を変更した時に、
修正個所が2行になってしまいます。

以上のような理由から、メンテの個所も少なく、コーディングも少
なく、見やすい(と私は思う)以下のようにしています。
//-----------------------------------------
    gofileend;
    down; // ここで強引にfalseにさせる。(テスト用のゴミ)
    replaceup ".\\f.", "\\0@\\1", regular;
    while( result ) findup;
    endmacro;
//-----------------------------------------

もっと正確に書くなら、私のコーディング規約では
//-----------------------------------------
    gofileend;
    replaceup ".\\f.", "\\0@\\1", regular;
    while( result )
    {
        findup;
    }
    endmacro;
//-----------------------------------------
のように行数は多くなってしまいます。(最初の書き込みの通り)


以上、私なりのマクロ講座でした。

[ ]
RE:07891 正規表現の「.」が誤認識No.07895
山紫水明 さん 01/03/08 16:08
 
 TAKAさん,安久津さん,こんにちは。

 前回のわたしのコメント じつはまちがいに気づいてすぐに(多分10分も経って
いなかった)削除しましたが,後の祭りでした。
 運悪くというか,運良くというか,お二人の偉い先生の目に留まってしまいまし
た。(^^) お恥ずかしいことでした。でも,おかげで講義を受けられて儲けものだ
ったと,以て瞑すべきでしょう
 で,ついでにコーディングのことについて。これについてはあまり話題になるこ
ともないので,この機会に教えを乞いましょう。(本当は会議室を移した方がいい
とは思いますが,お許しください)

》もっと正確に書くなら、私のコーディング規約では
》//-----------------------------------------
》    gofileend;
》    replaceup ".\\f.", "\\0@\\1", regular;
》    while( result )
》    {
》        findup;
》    }
》    endmacro;
》//-----------------------------------------
》のように行数は多くなってしまいます。(最初の書き込みの通り)

 3〜行目,私は秀丸の習慣では,
    while( result ){
        findup;
    }
というのが正統な書き方で,{}の中に一つの文しかないときは{}を省略しても差し
支えない,つまりコーディング違反ではないと見なしてきましたが,いかがでしょ
う。
 あくまで,コーディングの話です。

     では, (^^)/~
                                        山紫水明

[ ]
RE:07895 正規表現の「.」が誤認識No.07904
TAKA さん 01/03/08 18:52
 
TAKA です。

> 前回のわたしのコメント じつはまちがいに気づいてすぐに(多分10分も経って
>いなかった)削除しましたが,後の祭りでした。

そう言えば、メーリングリストに参加していると、削除があったか
どうかって、分からないですね。
#案内が来て欲しいなー


フォーラム移動の件、了解しました。
先ほど、コメントしておきました。

[ ]
RE:07904 正規表現の「.」が誤認識No.07918
きいろいまふらあ さん 01/03/08 20:32
 
> #案内が来て欲しいなー

ここに書いてもだめです。

[ ]