|
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;
}
//----
|
|