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

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



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.92095への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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