gettext関数の取得範囲について質問No.02597
こもり さん 01/11/08 01:21
 
 はじめまして、こもりと申します。

 gettext関数の仕様についてちょっと伺いたいです。

 マクロヘルプには、
「現在編集しているファイルのx1,y1からx2,y2の範囲にある文字列
  を返します。x,y座標の指定のしかたはmoveto文と同じです。」
と書いてありますが、moveto と同じ座標指定、ということは、
左端が x=0 、先頭行が y=0 ということですよね。

 マクロを書いていてgettext を使ったのですが、取得している文字
列範囲が、x1 〜 x2-1 までになっているようなのです。つまり、x2の
座標に存在する文字は gettext で取得できないのですが、これはこう
いう仕様なんでしょうか??

 ちなみに「ワープロ的数え方〜」やタブ文字の影響が出ないように、
1行収まって、タブ文字を表示しない行で試してみましたが、やはり
x2-1 までの範囲までしか取得できませんでした。

 仕様ならば、それにあわせてマクロを組みますが、どうもヘルプに書
いてあることとは違うように思えるので・・・・


[ ]
RE:02597 gettext関数の取得範囲についてNo.02598
Arimac さん 01/11/08 09:07
 
x行目、y桁目ではなく座標というちょっと?な書き方や
0から始まっているということを考慮すると、
ここでいうx,y座標というのは文字と文字の間を指している
ようです(^^;

つまり、
x座標:0 1 2 3 4 5 6 7 8 9
文字列: A B C D E F G H I
という感じになっていて x1=0, x2=1 だと
その間の "A" のみが取得されるわけです。

[ ]
RE:02597 gettext関数の取得範囲についてNo.02599
ENCODINGSHIFTJIS さん 01/11/08 09:10
 
> マクロを書いていてgettext を使ったのですが、取得している文字
>列範囲が、x1 〜 x2-1 までになっているようなのです。つまり、x2の
>座標に存在する文字は gettext で取得できないのですが、これはこう

座標とか範囲という、言葉の解釈の違いでしょう。
すぐわかるイメージとしては「カーソル位置」と手操作で動かした
カーソルの場合と同様です、と言えばわかりますか?
範囲の末尾はその文字を含みません。昔のMIFESではそうゆう動作設定
にもできたが、(日本語ワープロにもあったような)、Win標準時代では
秀丸は普通です。

●座標
ポイント・ロケーションは位置(点)を示し文字と文字の間にあり
文字そのものを指すものではありません。0から数えるインデックス
を使います。
●範囲
開始ポイントと終了ポイントで囲まれた部分。

あっているかな?

[ ]
RE:02597 gettext関数の取得範囲についてNo.02601
たーびん さん 01/11/08 10:35
 
ArimacさんやENCODINGSHIFTJISさんの繰り返しになってしまうかもしれませんが、私
の覚え書きからちょっと引用します。
参考になれば幸いです。


● gettext 関数について

gettext 関数の書式は gettext( x1, y1, x2, y2 ) となっているが、与えるパラ
メータはカーソル位置である(x2、y2も)。
そして、取得される文字列は、与えたカーソル位置で範囲指定してコピーしたとき
と同じである。
すなわち、秀丸ウィンドウ上でカーソル行左端から ABCDEFG となっていて、
gettext( 2, y, 5, y ) を実行したとき取得される文字列は、"CDEF"
ではなく "CDE" である。
また、取得される文字列はBOX範囲で取れそうな気がするが、BOX範囲ではない。
上の例で、y2を「y+1」としたとき、取得される文字列は、カーソル位置(2、y)から
yの行末までと改行文字(改行がある場合)、y+1の行頭から(4, y+1)までである。

[ ]
RE:02601 gettext関数の取得範囲についてNo.02603
こもり さん 01/11/08 22:26
 
 こんばんは、こもりです。

 Arimacさん、ENCODINGSHIFTJISさん、たーびんさん、回答どうも
ありがとうございました。

 なるほど、x2,y2にカーソルが存在したとして、そこまでの範囲指
定と考えれば良かったんですね。納得がいきました。
 どうもありがとうございます。

[ ]