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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0117
mikotostrrep命令について置換文字数や置換元の文字数に何か制限はありますか?また、HSP命令リファレンスに書かれたすべての命令について6解決


mikoto

リンク

2021/1/17(Sun) 16:36:46|NO.92095

皆様に質問です。
strrep命令について置換文字数や置換元の文字数に何か制限はありますか?
また、HSP命令リファレンスに書かれたすべての命令及び関数について何か制限や使い方を誤るとエラーになることやエラーに表示されないことはありますか?
命令と関数の欠点の把握のためです。
よろしくお願いいたします。



この記事に返信する


mikoto

リンク

2021/1/17(Sun) 16:44:05|NO.92096

HSP命令リファレンスによく書かれていないことも知りたいです。



mikoto

リンク

2021/1/17(Sun) 17:12:54|NO.92097

皆様が氣付いたこと何でも構いません。



mikoto

リンク

2021/1/20(Wed) 16:02:43|NO.92111

ゆっくりと命令と関数の欠点を自分メモしていきます。



GENKI

リンク

2021/1/22(Fri) 22:46:01|NO.92127

> strrep命令について置換文字数や置換元の文字数に何か制限はありますか?

書いてないのは、書き忘れか、環境依存などで明記できないかとかそのあたりかもしれません。
わからないなら自分で調べるのも一つの手です。

testsize = int(powf(2, 29)) ; testsize = 0x528F8DFF mes "文字数:" + (testsize-1) sdim s, testsize ; 全て同じ文字で埋める memset s, 'A',testsize poke s, testsize - 1, 0 ;mes s ; 置き換え strrep s, "A", "B" ;mes s ; 置換出来たかチェック mes "最初の文字 " + strmid( s, 0, 1 ) mes "最後の文字 " + strmid( s, testsize - 2, 1 ) ; testsize - 1 は終端文字0

testsizeの大きさを変えてテストしてみました。

1385139712 = 0x528F8E00
#Error 1 in line 9 (???) -->システムエラーが発生しました
sdimで発生。無制限だったのでは…?
このサイズで何回かやっているとエラーが出ないこともあります。

1073741824 = int(powf(2, 30))
#Error 1 in line 11 (???) -->システムエラーが発生しました
strrepで発生。流石に大きすぎたようです。境界はどこでしょうね?

2147483648 = int(powf(2, 31))
#Error 20 in line 9 (???) -->バッファオーバーフローが発生しました
pokeで発生。あれ? sdim 通ってる。


あとは、実際に自分が使おうとしている範囲で何度かテストしてみて問題が起きないなら気にしなくていいと思います。
問題が起きてから、その時に対策を考えるようにしたほうが開発は前に進みますね。


> HSP命令リファレンスによく書かれていないことも知りたいです。

量がすごいですからね。書き忘れも多いと思います。
また作っていても気が付かない制限事項が出来ることもあります。
全部を書き出すとなると、デバッグする人を大量に準備する必要がありそう。

自分が使う予定があって、条件がシビアなのもについてだけ聞くとかしたほうが良いと思います。
たくさんあると思うので…。


> また、HSP命令リファレンスに書かれたすべての命令及び関数について何か制限や使い方を誤ると
> エラーになることやエラーに表示されないことはありますか?

文字列変数を memset で初期化したものの終端文字(0)入れ忘れると0のとこまで際限なく読んでしまいます。
文字列変数をバイト単位で操作していると終端文字を忘れて変な結果になるのはよくやってしまいがち。
上記スクリプト書くときも忘れてました。



> 命令と関数の欠点の把握のためです。

あまり気にして調査ばかりしてしまい制作が進まない…とかよくあります。
このスレでまとめて調査できるといいですね。他にも書き込んでくれる人がいるといいのだけど…。(チラッチラッ)



mikoto

リンク

2021/1/23(Sat) 17:53:44|NO.92138

GENKI様、かきこみありがとうございます。
たしかに調べていると時は進み過ぎてプログラムを書くことが進まないことがあるので
まづ、HSP標準命令を熟知していこうと思います。
memset命令は、つかったことはなく、GENKI様の書き込みにより知ることができたので良かったと思います。



GENKI

リンク

2021/1/23(Sat) 22:54:14|NO.92141

暇してる誰かすごい人が検証スクリプト投下してくれないかと期待してたのですが…。



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