タイトル | : xc のバグと対策 |
投稿日 | : 2023/03/25(土) 18:29 |
投稿者 | : konno | 番 号 | : 10706 10701 番 文太 さんへのコメント コメント数 1 |
xc のバグといえば、あむのさんの対策を思い出します。 CODEX.DEF で検索しましたが、BL2048 だと CODEX.DEFが起動しない! まいった。(>_<) BL4096 なら起動できたので、以下に引用します。(^^; -----------------------------------------------------------> 06847/06847 xxxxxxxx あむの xc にはご注意!> (15) 97/07/10 07:56 06827へのコメント変数 xc にはよく知られたバグがあります。 (1) 32,767 byte の前後にかかる後ブロック(注)で xc の値が 0 となる ファイル 32767 65536 65K+32767 (byte) +------------+----------+--- .... ---+---------- ...... ・========* ・====* blk blk (*印がカーソル位置) 本来ならば xc == 1 。 (2) 文字境界ブロック (mb==2) 限定のバグ ・ファイル先頭行にブロックがかかること。 ・前ブロック(注)であること。 ・カーソルカラム数がブロック終端のカラム数(wa..51)より小さい。 この場合、xc の値が 0 となる。(本来はxc == -1) (例) ファイル先頭 +-------------------------------+ | *===========================| |======・ blk | | | (*印がカーソル位置) (注) 前ブロック カーソルがブロックの前の場合(xc:-1) 後ブロック カーソルがブロックの後の場合(xc:1) ですから、上記バグの条件にあたらないことが明確ならば、xc は有用です が、それ以外の場合には使わない方が良いかと思います。 * * * xcの代替手段としては、マーク機能(&#M(n))をブロック前後で使って、その マークの値を比較するというのが一般的ですが、これまたちょっと問題を孕ん でいます^^;。 というのは、純正Vzには、ロング整数を比較する&Lcという関数にも著名 なバグがあって、使えないのです(榊原さん版Vzは修正されています)。 というわけで、自力ですると、例えばこんな↓ふうになります。 FGALPK Mes13 #02168 94/12/17 y.mikome さん ご紹介の方法に若干手抜き したものです。 =Test カーソルをブロックの前にする。 マーク#0 wa+126 (wa..63,wa..64) マーク#1 wa+130 (wa..65,wa..66) * M 89 ^\ "" ?.(mb)??. #M #B &#M(1) #B p$8000, ;ブロック前後でマークする(位置は元に) (wa..64 > wa..66 || (wa..64 == wa..66 && p+wa..63 > p+wa..65) )?#B * ここまで ----------------------------------------------------------- 私は xc を使ったこともなく、よくわかっていなかったのですが 今このマクロを見ると、なんとなく読める気がします。(気の精) # 読める! 私にも読めるぞぉ! ララァ 06858番の発言では ----------------------------------------------------------- あ、いえ、ブロックのサイズの問題ではないのです。ファイルサイズとブロ ックの位置の問題なんです。 百聞は一見に如かず、ということでこの↓マクロを実行して xc の値を確か めて下さい。 =Test 巨大なファイル(例えばログファイル)上で実行して下さい。 * M 80 ^\ "" ?.mb0,&d &Im(wa+126,0) wa..63=$7FFF, #U #< #b #> #d &m("xc:%d",xc) * また、幸い?なことにバグは xc==0 のときだけのようですから、その時は 実行させず、警告メッセージを出すだけにしても良いかもしれませんね(特に 今回のマクロの場合は、バグでない xc==0 の時も実行させる必要もなさそう ですから)。 ここまで ----------------------------------------------------------- これを踏まえて、気が向いたら調べてみたいですね。(無責任モード)
- No.10706 一括表示へ - コメント元:10701 一括表示へ - [ 返信 ] [引用無し] pre