gettext と2バイト文字の1バイト目No.00352
さが美 さん 99/01/14 04:33
 
  gettext で指定した文字数を取り込むことを考えています。その際問題に
なるのが、最後の文字が、2バイト文字の位置バイト目だった時の処理です。
(ごみみたいのがつく。)
  以下に示すマクロで、うまくいく場合といかない場合があります。どこか
に見落としがあると思うので、アドバイスいただけないでしょうか?

hidemaru.txtより12行目近辺
×
「 従来のWindows3.1で秀丸を動作*」ゴミが残る

「Version 1.48以下をご利用くださ」ゴミが取れる

//-------------------------------------
$file = hidemarudir + "\\hidemaru.txt";
openfile $file;
moveto 0,9;
while(1){
{$string = gettext (0,y,31,y);}
down 1;
call sub $string;
question $string + $$return;
if(result == no){ break;}
if (code == eof){break;}
}
endmacro;

sub:
{
##code = ascii(rightstr($$1,2)); //--最後の2バイトを取って
if ( ( ##code >= 0x8140) ) //--2バイト文字ならok
{$$str = $$1;}
else{
$$word =  rightstr($$1,1); //最後の1バイトが
##code = ascii($$word);
if ( ( ##code >= 0x20 && ##code <= 0x7E )//--1バイト文字ならOK
|| ( ##code >= 0xA1 && ##code <= 0xDF ) )
{$$str = $$1;}
else{$$str = leftstr($$1,strlen($$1)-1);}//--だめなので捨てる
}
return $$str;
}
//----

[ ]
RE:00352 gettext と2バイト文字の1バイNo.00357
さが美 さん 99/01/15 23:34
 
  自己レスですが…FWINALでの書き込みを見ていて思い付きました。

とりあえず、moveto で移動してやると、2バイト文字の2バイト目には
移動できないことが分かったので、移動してから、gettextすることにし
ました。

[ ]