Re: バグ報告スレッド 8 [ No.163 ] | |
|
2010/03/12 21:20 串 |
7. "\\" の取り扱いが妙なことになっています。
"\\" を代入した文字列変数を左辺書き換えのキーボード入力に渡したとき、0x01 の文字が2つ表示されます。 (ウディタ内部で使用されている表現? 以下、"\" が2つ並んだだけのものと区別するために 0x01 0x01 と書かせてください) 逆に、キーボード入力で "\" を入力すると "\\" が返りますが、"0x01 0x01" に置換されず、単に "\" が2つ並んだ状態になります。
その他、 ・条件分岐(文字)の入力欄 ・可変DB書込の文字列処理欄……(A) ・データベースへの参照……(B) においても "\\" が置換されないようです。
このため、
■文字列操作:S0[] = キーボード入力 10文字 ■文字列操作:S1[] = "あいうえおかきくけこ" ▼ ↓「数値処理または代入先指定」ではなく、「文字列処理」で "\s[0]" ■可変DB書込:DB[0:0:0] = "\s[0]" ■文字列操作:S1[] = "さしすせそたちつてと" ■文章:\cdb[0:0:0]
このような(名前入力などの)イベントで"\s[1]" と入力すると、"\\s[1]" が置換されないまま \s[0] に格納され、 DB書込時に "\\" は置換されず(A)"\s[1]" が置換され、 \cdb[0:0:0] には "\あいうえおかきくけこ" が格納されることになります。
■文字列操作:S0[] = キーボード入力 10文字 ■文字列操作:S1[] = "あいうえおかきくけこ" ▼ ↓「文字列処理」ではなく、「数値処理または代入先指定」 ■可変DB書込:DB[0:0:0] = S0[] ■文字列操作:S1[] = "さしすせそたちつてと" ■文章:\cdb[0:0:0]
このようなイベントの場合は、"\\s[1]" がまったく置換されないまま \cdb[0:0:0] に書き込まれ、最後の文章表示で "\さしすせそたちつてと" と表示(B)されます。
上記のどちらも、"\s[0]" と入力すると(おそらく無限ループが原因で)フリーズします。
その他、バグというより仕様のような気もする関連現象 ・「S0[] = "\"」としたとき、「S0[] = "\s[0]\s[0]"」では "0x01 0x01" になりますが、「S0[] += S0[]」では単に "\" が2つ並んだ状態になります。 ("\\" に限らず他の特殊文字でも同様のことは起こるみたいです)
・"0x01 0x01" から1文字切り出しするときそのまま切り出すらしく、"0x01" になってしまうようです。
・"0x01 0x01" を画面に表示すると "\" になりますが、文字列操作でファイルに出力する場合には "\" 2つになります。 例えば "\s[0]" とだけ書かれたファイルを作れませんし、ファイル出力の時も "\" 1つでいいんじゃないでしょうか。
・逆にファイル内容読込のときは、"\" を問答無用で "0x01 0x01" に置換してしまっていいんじゃないでしょうか。 現状では、"\s[0]" などと書かれたファイルを正しく画面に表示できないですし。
相変わらずまとまりのない文章で申し訳ないです。 長くなりましたが以上です。
# 追記 # 誤記を訂正しました。
|
|