HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
1001
popon違い2解決


popon

リンク

2010/10/1(Fri) 14:45:29|NO.35201


#include "hsp3clmod.as" #runtime "hsp3cl" clinit repeat repeat 20 clpos cnt,A mes "A" wait 1 loop A++ loop #include "hsp3clmod.as" #runtime "hsp3cl" clinit repeat repeat 20 clpos cnt,A mes "矢" wait 1 loop A++ loop
上下のソースで挙動が異なる理由を教えてください。



この記事に返信する


SYAM

リンク

2010/10/1(Fri) 15:27:35|NO.35202

A が 1 バイト文字で、
矢が 2 バイト文字だから です。

漢字1文字は、半角文字1文字の2倍の大きさのデータになります。
clpos 命令で指定している左からの文字数は、厳密には文字数でなく「それより左にあるデータの大きさ」です。

となると、半角文字1字ぶんずつ右にずらして文字を書き込んでいくとすると…

A
AA
AAA
AAAA

…となるのはわかりますね。しかしこれは半角文字だからです。
全角文字では


?矢
??矢
???矢

…のように、常に最後に書いた新しい文字だけが「矢」になります。
新しい文字の前半分が、前に書いた文字の後半分を書きつぶしてしまっているからです。

残った前半分("?"の部分)は、もはや後半が失われてしまっているので「矢」という文字を表すことができていません。



popon

リンク

2010/10/1(Fri) 17:01:45|NO.35210

cnt*2でうまくいきました。
ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.