|
バージョン:V8.51、32Bit、試用版
概要:
特定の文字列において、gettext()を呼び出すと期待する文字列が返されない。
再現するコード:
下記コードの目的は
UTF-16の文字コードが書かれた、「&#xxxxx;」という文字列から「xxxxx」だけ
抜き出し
文字コードから文字に置換する。「&#」で始まり、「;」で終わるという条件で
作成しています。
#flg = 0;
while ( #flg != 1 ) {
$stline = gettext(0, 0, 1000, 0);
// message $stline;
#posSt = strstr($stline , "&#");
#posEn = strstr($stline , ";");
if ( #posSt == -1) {
#flg = 1;
}
// &# を除く ; までを抜き出す
$beforeStr = gettext( #posSt+2, 0, #posEn, 0 );
// message str(#posSt) + "," + str(#posEn) + ", string=" + $beforeStr;
$afterStr = unichar( val( $beforeStr ) );
// 置換
replaceall "&#" + $beforeStr + ";", $afterStr, word;
}
再現する文字列:
@ '(。0﹏0。)っ { プヒᦏ
9;ー
A '⋆空蝉⋆'
出力が期待される結果:
@ '(。0﹏0。)っ { プピー
A '⋆空蝉⋆'
現象:
上記コードで再現する文字列に対してマクロを実行し、処理中得られるx1とx2をも
とにgettext関数を呼び出すと
戻り値の文字列が引数で渡したx1,x2より2つ前の位置の文字列を返す
@3回目のループで発生
A2回目のループで発生
その他:
再現する文字列を小分けにした場合は発生しない
過去バージョンでの確認は未実施
コードがおかしいのかなと思いましたが、gettextの挙動が途中で変になっているイ
メージです。
フォーラムのNo.33784において報告された不具合は修正されているようなので、別の
問題かと思い
ここに投稿させて頂きます。
|
|