gettextで指定文字列範囲についてNo.06293
みつ さん 10/04/08 17:27
 
カーソル行の先頭から3文字取得するために
 $s = gettext(0, y, 2, y);
とした場合先頭から2文字しか取得できません。
ちなみに
 $s = gettext2(1, y + 1, 3, y + 1);
とした場合は3文字取得できます。

取得する文字は全て半角です。
秀丸エディッタはVer8.00です。
古いバージョンでは確認していません。

理由が分かる方、アドバイスをお願いします。



[ ]
RE:06293 gettextで指定文字列範囲についNo.06294
Iranoan さん 10/04/08 17:53
 
 みつさん今日は、Iranoan です。
>  $s = gettext2(1, y + 1, 3, y + 1);
 「gettext2() 関数の引数になぜ y を使う?」という疑問さておき、
> とした場合は3文字取得できます。
2 文字しか取得できませんが???
 私の使っているのが、Ver.8.01β1 Float Macro だから? 改訂履歴には、こ
れに関して何もなかった気がするけど。

[ ]
RE:06293 gettextで指定文字列範囲についNo.06295
秀丸担当 さん 10/04/09 11:00
 

>カーソル行の先頭から3文字取得するために
> $s = gettext(0, y, 2, y);
>とした場合先頭から2文字しか取得できません。
>ちなみに
> $s = gettext2(1, y + 1, 3, y + 1);
>とした場合は3文字取得できます。

V8.00の通常版や古いバージョンでも確認してみましたが、どちらも取得される
のは2文字でした。
gettext2のカラム位置(桁位置)は、gettextと同じく 0 から始まります。
カーソルのカラム位置を表すcolumnキーワードも 0 から始まるので、columnと
同じ数え方で扱うことができます。

  $s = gettext2(0, lineno, 2, lineno);

でgettextとほぼ同じ結果が得られました。


ちなみにmovetolinenoだけがカラム位置が+1されるのが違和感があるという意見
がありまして、mveto2という文がV8.00で追加されました。
moveto2が追加されたことで、column, moveto2, gettext2 などを同じ数え方で
扱うことができるようになりました。

[ ]