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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1022
田宮HSP3.31の不具合?6解決


田宮

リンク

2012/10/22(Mon) 23:30:49|NO.50162

#include "hspinet.as"

netinit
neturl "http://www.onionsoft.net/hsp/v33/doclib/"

temp=""
aa=""

repeat 5
netrequest_get "update.htm"

repeat
netexec res
if res > 0 : break
await 50
loop

netgetv temp(cnt)
aa += temp(cnt)
await 30

loop

mes aa
stop

HSP3.31にアップデートしてからこのプログラムを実行すると必ず「配列の要素が無効です」とのエラーが出ます。
HSP3.3の時は何の問題もなく動いていたのですが、HSP3.31の不具合でしょうか?



この記事に返信する


田宮

リンク

2012/10/22(Mon) 23:33:55|NO.50163

3.3の時にコンパイルした実行ファイルでも同様のエラー吐いてます。
3.31に同梱されたhspinet.dllの仕様が変わったものと思われ



田宮

リンク

2012/10/22(Mon) 23:35:41|NO.50164

連投すみません。
3.3に同梱されたhspinet.dllに差し替えたところエラーを吐かなくなりました。
やはり3.31で仕様が変わっているみたいですね。



匿名希望

リンク

2012/10/22(Mon) 23:36:39|NO.50165

配列は基本的に、使う前に初期化した方が良いです
6行目の
temp=""

sdim temp, , 5
に変えてもエラーが出ますか?



田宮

リンク

2012/10/22(Mon) 23:40:35|NO.50166

sdimを使用してもエラーが出ます。
古いhspinet.dllに差し替えると全く問題なく動きます。

http://www.onionsoft.net/hsp/v33/doclib/history.txt
[hspinet] netgetv命令によるバイナリデータの取得に対応(BT#240)

とあるのでこれが原因ではないかと思います。



KA

リンク

2012/10/23(Tue) 12:15:55|NO.50171

>>aa += temp(cnt)
で aa の文字長以上の文字が入っているのでは。
これも配列で確保しないとダメだと思います。



レノス

リンク

2012/10/23(Tue) 15:38:47|NO.50172

netgetv は temp を配列として初期化するので、どう初期化しても temp は配列でなくなります。

> p1で指定された変数は、自動的に必要なサイズを確保した文字列型として初期化されます。
(netgetv のヘルプより)

netgetv temp aa += temp



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