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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0824
リトルリンダbmppaletteを使用するとgetstrでオーバーフローする2解決


リトルリンダ

リンク

2024/8/24(Sat) 13:00:13|NO.102068

下記のスクリプトで19行目をコメントオンにすると25行目でバッファオーバーフローというエラーが出ますが、何故それが出るのか、解決方法が皆目見当がつきません。
bmppaletteのソースコードを確認したのですが、一見原因は無い様に思いました。

変数palで指定したパレットコードのみ変色させ、それ以外の色は元に戻したい、つまり元々のパレットの内、一色だけ動的に変更したいのです。

なぜbmppaletteを使用するとgetstrでオーバーフローするのでしょうか。
bmppaletteはgetstrにどのような影響を及ぼしますか。

いつも初歩的な質問ですみませんが、ご教示くださると幸いです。

よろしくお願いいたします。



#module mes_img_ #deffunc mes_img_init scrid=ginfo_newid buffer scrid bmppalette dir_exe+"\\sample\\hgimg3\\testchr.bmp" celload dir_exe+"\\sample\\hgimg3\\testchr.bmp",scrid,1 celdiv scrid,32,32,0,0 return #deffunc mes_img str p1 tgtscr=ginfo(3) x=ginfo_cx r=ginfo_r : g=ginfo_g : b=ginfo_b if scrid=0 : mes_img_init _buffer=str(p1) getstr a,_buffer,0,, if strsize>1024 : dialog "error1024mes" gsel scrid ;bmppalette dir_exe+"\\sample\\hgimg3\\testchr.bmp" palette pal,r,g,b,1 pal++ if pal>255 : pal=0 gsel tgtscr repeat strsize getstr a,_buffer,cnt,,2 if a="あ" : celput scrid,0 : continue if a="い" : celput scrid,1 : continue if a="う" : celput scrid,2 : continue if a="え" : celput scrid,3 : continue if a="お" : celput scrid,4 : continue if a="か" : celput scrid,5 : continue if a="き" : celput scrid,6 : continue if a="く" : celput scrid,7 : continue if a="け" : celput scrid,8 : continue if a="こ" : celput scrid,9 : continue loop pos x,ginfo_cy+32 return #global #include "hsp3util.as" repeat redraw 0 color 255,255,255 : boxf color 0,0,0 : pos 0,0: mes "cnt="+cnt color 255,255,0 : pos 0,100 mes_img "あいうえおかきくけこ" mes_img "あいうえおかきくけこ" mes_img "あいうえおかきくけこ" mes_img "あいうえおかきくけこ" await 1000 redraw 1 loop



この記事に返信する


沢渡

リンク

2024/8/24(Sat) 18:04:49|NO.102069

hsp3util.asを確認したところ、内部でexist命令を使っているせいで
システム変数strsizeの値が変わり、それがその後の「repeat strsize」に悪影響を
及ぼしているのだと思います。
(BMPのファイルサイズなので、相当大きな値になっている筈)
16行目のgetstrで得たstrsizeの値を別の変数に入れて、
その変数をrepeat文で使うとどうでしょうか?



リトルリンダ

リンク

2024/8/24(Sat) 20:06:15|NO.102070

なるほどなるほどなるほど!!

existでstrsizeが変わるのは盲点でした。
strsizeを_strsizeに代入し解決致しました。

至らない私ですみません。
いつもありがとうございます。



記事削除

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

NO.102068への返信

マスコット

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

名前

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

削除用パスワード

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

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

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