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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1018
窓口sdimの第二引数内容の取得8解決


窓口

リンク

2009/10/18(Sun) 18:50:17|NO.28388

sdim の第二引数であるサイズのメンバを取得することは出来ますでしょうか?
下のスクリプトでは配列の要素数しか取得することが出来ません。


#define global ctype ALLlength(%1) length(%1),length2(%1),length3(%1),length4(%1) #const len1 11 #const len2 12 #const len3 13 #const len4 14 sdim string,100 , len1 , len2 , len3 , len4 def = ALLlength(string) repeat 4 mes def(cnt) loop

よろしくお願いします



この記事に返信する


KA

リンク

2009/10/18(Sun) 21:20:30|NO.28393

質問の内容を良く見直しましょう!

回答としては 100 です、自分で指定した物を調べる必要は有りません。

各要素に入っている文字数の事で有れば strlen 等で調べられます。



窓口

リンク

2009/10/19(Mon) 07:52:01|NO.28407

すみません。
確保されている一要素毎のバッファのサイズの事です。

現在、配列変数全体を、memcpy命令で完全に複製する、スクリプトを作っているので。
それがどうしても必要なのです。
int型の配列は4次元まで、完全に複製できるところまで行ったのですが。
str型の配列で止まってしまいました。やはり一要素ごとのサイズを保存しておいて。
必要な時に使用するしか方法は無いのでしょうか?



SYAM

リンク

2009/10/19(Mon) 10:28:09|NO.28410

基本的にメモリ(変数、配列変数、文字列変数)は確保したひとが管理するものとおもって、
>要素ごとのサイズを保存しておいて。必要な時に使用する
…のようにしたほうが良いでしょう。
どの道、どこかのタイミングでメモリ内にその値を格納するということには変わりありませんし。



a

リンク

2009/10/19(Mon) 10:56:16|NO.28413

ほれ
http://www.google.co.jp/search?q=hsp+PVAL2

モジュールを作るなら必要かもですが、
自分で使うだけなら他の方の仰るように配列を初期化するときに記録しておくのが普通のやり方と思う



レノス

リンク

2009/10/19(Mon) 21:33:47|NO.28432

そのようなことを一般的に行う機能はありませんが、
黒魔術でいいのなら、以下のページが参考になるかもしれません。

HSP開発wiki STRBUF
http://hspdev-wiki.net/?HSP3%2FSTRBUF
( 1つめのスクリプト )



KA

リンク

2009/10/19(Mon) 22:20:22|NO.28433

>>確保されている一要素毎のバッファのサイズの事です。
>>int型の配列は4次元まで、完全に複製できるところまで行ったのですが。

str および sdim は、hsp3からバッファの自動拡張がされています。
サイズを指定しても、それ以上の物は勝手に拡張される様です。
また、その関係でメモリ上の位置も変わってくるので、簡単に複製は無理でしょう。
(”それは知っている”のなら、最初に言って下さいね。)

どうしてもしたいのなら、拡張されない様にあらかじめ十分なバッファを指定しましょう。



窓口

リンク

2009/10/20(Tue) 11:44:30|NO.28445

解決しました。

文字列型変数のmemcpyによる複製は諦めます。
repeat ~ loop の繰り返しで
要素の内容を移した方が早いことに気づきました。
ラベル型の疑似クローンと、実数型のコピーに成功したので良しとします。

皆様有難うございました。



窓口

リンク

2009/10/20(Tue) 11:44:58|NO.28446

解決



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