初歩的な質問3個、お願いします。No.02460
haru さん 01/10/05 16:23
 
1.マクロを書くときにラベルを使うことがあるんですが、ラベル
  の行だけ検索したいのですが。
  ラベルに英数字以外の文字も指定できるとして、「^任意の文
  字列:」なので、正規表現で、「^.+:」では、うまくヒットし
  ません。
  どう記述したら、うまくいきますか?
  恥ずかしながら、ついでに行末に;が無い行を検索する場合、
  「.+[^;]$」ではうまくいきません。教えて下さい。

2.マクロの中にfind;というコマンドがあったとします。マクロ
  を実行すると検索ダイアログボックスが開きますが、ここでマ
  クロを終了したいと思い、キャンセルを押すのですが、マクロ
  は終了しません。どう記述したらうまくいきますか?
  inputの関しても、同じです。とりあえず今は、
  $a=input("a=?");
  if ($a=="")endmacro;
  としています。

3.input文で、2行に分けて表示したいときはどうすれば良いで
  すか?とりあえず今は$a=input("a=?"+"\x0D\x0A"+"b=?");と
  しています。他に何か良い方法はありませんか。

以上、よろしくお願いします。

[ ]
RE:02460 初歩的な質問3個、お願いしますNo.02462
ひろ さん 01/10/05 18:03
 
 haru さん今日は、ひろです。
> 1.マクロを書くときにラベルを使うことがあるんですが、ラベル
>   の行だけ検索したいのですが。
>   ラベルに英数字以外の文字も指定できるとして、
 認識が間違っています。詳細はヘルプを見ていただくとして、
「[0-9A-Z_a-z]+:」で上手くいくと思います。

> 2.マクロの中にfind;というコマンドがあったとします。マクロ
>   を実行すると検索ダイアログボックスが開きますが、ここでマ
>   クロを終了したいと思い、キャンセルを押すのですが、マクロ
>   は終了しません。どう記述したらうまくいきますか?
 検索に失敗した場合も、マクロを継続する必要は有るのでしょうか? そう
でなければ、
find;
if( !result )endmacro;
でよいです。

>   inputの関しても、同じです。とりあえず今は、
>   $a=input("a=?");
>   if ($a=="")endmacro;
 こういう使い方をするものだと思いますが、何か不都合があるのでしょう
か? $a == "" の場合も動作させたいなら、question 文で再度確認させれば
よいと思います。

> 3.input文で、2行に分けて表示したいときはどうすれば良いで
>   すか?とりあえず今は$a=input("a=?"+"\x0D\x0A"+"b=?");と
 後は、
$s = input("1\n2");
とするぐらいしかないと思います。ただし 3 行までしかできないようです。

[ ]
RE:02460 初歩的な質問3個、お願いしますNo.02463
TAKA さん 01/10/05 18:29
 
TAKA です。

>1.マクロを書くときにラベルを使うことがあるんですが、ラベル
>  の行だけ検索したいのですが。
>  ラベルに英数字以外の文字も指定できるとして、「^任意の文
>  字列:」なので、正規表現で、「^.+:」では、うまくヒットし
>  ません。
>  どう記述したら、うまくいきますか?
>  恥ずかしながら、ついでに行末に;が無い行を検索する場合、
>  「.+[^;]$」ではうまくいきません。教えて下さい。

検索ダイアログで正規表現をONにすれば出来ます。
マクロなら、
searchdownなどに「regular」を指定します。詳細はヘルプをみて
下さい。

「^.+:」はあっています。(「」は指定しません)
少なくとも、
ABC:
にはヒットします。

「.+[^;]$」ではなくて、「.+[^;\n]$」にする必要があります。
前者では改行にもヒットします。


>2.マクロの中にfind;というコマンドがあったとします。マクロ
>  を実行すると検索ダイアログボックスが開きますが、ここでマ
>  クロを終了したいと思い、キャンセルを押すのですが、マクロ
>  は終了しません。どう記述したらうまくいきますか?
>  inputの関しても、同じです。とりあえず今は、
>  $a=input("a=?");
>  if ($a=="")endmacro;
>  としています。

inputにはリターン値がありますので、リターン値でチェックしま
す。

$a=input("a=?");
if( !result )
{ //ESC
    endmacro;
}


>3.input文で、2行に分けて表示したいときはどうすれば良いで
>  すか?とりあえず今は$a=input("a=?"+"\x0D\x0A"+"b=?");と
>  しています。他に何か良い方法はありませんか。

「\n」で改行です。
$a=input("a=?\nb=?");

[ ]
RE:02462 初歩的な質問3個、お願いしますNo.02464
TAKA さん 01/10/05 18:45
 
TAKA です。

>>   ラベルに英数字以外の文字も指定できるとして、
> 認識が間違っています。詳細はヘルプを見ていただくとして、
>「[0-9A-Z_a-z]+:」で上手くいくと思います。

http://win.blue.co.jp/~jr-kun/hidemaru_qa/3_sub.html#EXAMPLE
の「コラム」を見た可能性がありますね。

ひょっとしたら私もひろさんも大きな勘違いをしているかもしれま
せん。
なぜなら、「うまくヒットしません」としか言われていないのでど
のようなラベルを記述したらどうなったか?本当はどうなって欲し
いど詳細な情報がありませんから。
私は単に「正規表現」のONのし忘れだと思っていました。

もう少し、情報が欲しいですね。


>>   if ($a=="")endmacro;
> こういう使い方をするものだと思いますが、何か不都合があるのでしょう

私は、リターン値を見るべきものだと思っていましたが。


>とするぐらいしかないと思います。ただし 3 行までしかできないようです。

本当だ。知らなかった。

[ ]
RE:02464 初歩的な質問3個、お願いしますNo.02465
ひろ さん 01/10/05 19:03
 
 TAKA さん今日は、ひろです。
> 私は、リターン値を見るべきものだと思っていましたが。
 result で解るんですね。

[ ]
RE:02460 初歩的な質問3個、お願いしますNo.02466
haru さん 01/10/05 23:10
 
TAKAさん、ひろさん、ありがとうございます。
アドバイスされたようにやってみます。
その中で、わからないことがあれば再度お聞きします。
ありがとうございました。

[ ]