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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0915
アミノさんサイズが疑問3未解決


アミノさん

リンク

2006/9/15(Fri) 15:22:45|NO.2441

MOJIっていう変数に、改行とか特殊な文字をたくさん使った文字列を入れてて
strlen(MOJI)で数値を調べたりすると、
その数値は=変数のサイズなんですか? 5が帰ってきたら5KBとか。

ファイルを保存したり読み込んだりする時に
ファイルのサイズを指定する時も、そのままstrlenでかえってきた
サイズを渡せばいいんですか?



この記事に返信する


Drip

リンク

2006/9/15(Fri) 20:09:17|NO.2443

Dripです。

 アミノさん さん、こんにちは。
変数のサイズですが、残念ながらHSPには変数のサイズを調べる機能がついていません。
要望はぽつぽつ目にしますが、現行のバージョンで変数のサイズを調べることは不可能です。

 しかし、変数のサイズを計算で求めることは可能です。
例えば

dim a,10
と定義された変数は、整数型(4バイト)の配列が10個あるわけですから、
サイズは40バイト、ということになります。

sdim a,10,10
と定義された文字列型変数は、10バイトの長さを持つ配列が10個あるわけですから、
サイズは100バイト、ということになります。
この情報は、HSPのデバックウィンドウで確認することも可能です。

 strlenで調べられるのは、文字列の長さであって変数のサイズではありません。
例えば変数Xの中に「あいうえお[Null]かきくけこ」という内容が書き込まれていたとしたら、
変数の保持するデータサイズは21バイトですが、strlenの結果は10バイトになります。
これは、strlen関数が0バイト目からNullが書き込まれたインデックスまでの長さを返すためです。

 ちょっと難しいですが、変数の型や文字列に関する事を説明したWebサイト等を参考に
少しずつ理解していくようにすると良いと思います。



Irisawa

リンク

2006/9/15(Fri) 20:25:34|NO.2444

HSP開発Wikiの方にPVal構造体を取得するモジュールなどがあります。

http://hspwiki.nm.land.to/?%BE%AE%A5%EF%A5%B6%2F%A5%DD%A5%A4%A5%F3%A5%BF%A4%F2%BB%C8%A4%C3%A4%C6%A4%CE%A4%A2%A4%EC%A4%B3%A4%EC

これで、変数の確保されている実際のサイズを取得することが可能です。



774

リンク

2006/9/15(Fri) 20:45:26|NO.2448

strlenは変数に入っている文字列のサイズを返す
(バイト数なので全角1文字は2バイト)

変数のサイズではないので
bsaveで保存するときならstrlenで返ってきたサイズをそのまま渡せばいい

bloadで読み込むときならexistでファイルのサイズを調べてから

//notesave,noteloadってのもあるんだけど・・・



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