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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0901
KAmesbox の文字数2解決


KA

リンク

2011/9/1(Thu) 17:10:11|NO.40999

今まで字数を十分大きく取っていたので気がつかなかったのですが


;1:mesboxに追記出来ない(これは納得) A="012345678901234567890123456789" mesbox A,400,50,1,30 ;2:mesboxに追記出来ない(文字数は、全角も半角も1文字?) A="012345678901234567890123456789" mesbox A,400,50,1,30 ;3:mesboxに書き込める(オーバー分の削除は出来る) A="0123456789012345678901234567890123456789" mesbox A,400,50,1,30 ;4:mesboxに追記出来る(文字数指定していないから64文字?) sdim A,32 A="0123456789012345678901234567890" mesbox A,400,50,1

1・3・4は、まあ良いとしても2が納得できない、第五パラメー
ターはバイト単位だと思い込んでいましたが、半角・全角を組み合
わせて使い、他の変数に転送すると自動拡張されて、想定外の長さ
になってしまいます。(固定長として扱っているから)

何かおかしいと思い strlen で見て気が付き、現状は文字数を表示
しながら使っています。ヘルプを見ると”文字数”と書いているの
で、間違いでは無いのですが、他の命令・関数はバイト単位だと思
います。(いや他もそうなのか)

mesbox だけ仕様が外れているのなら、ヘルプにもその辺をはっき
り書いてもらいたいと思います。



この記事に返信する


TTRUKO

リンク

2011/9/1(Thu) 19:55:25|NO.41001

ドイツ語やフランス語のテキストを入力してみるとわかりますが
mesboxは、実はUnicodeで動いている(たぶん)ので、
Shift-JISと違ってキャラクター単位がデフォルトなのではないでしょうか

この辺あんまり詳しくないのであれですが、
基本的にHSPがShift-JISで、WindowsがUnicodeらしいので
出力処理(HSP→Windows)をやってるときは特に問題なくても
今回みたいに入力処理(Windows→HSP)をするときに、
その辺の違いが表に出やすいのかも…

確かに入力バイト数を制限したいときには、
ちょっと不便に感じるかもしれませんね^^;



KA

リンク

2011/9/2(Fri) 07:47:35|NO.41009

う〜ん、何となくそんな気もしていました。

ユニコードを直接入力出来なかったので貼り付けてみました。
表示上はコピー出来ましたが、変数の内容は・・・・・。

とりあえず、そんな物なんだと考えておきます。



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