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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0609
にと長い文字列を置き換える方法2解決


にと

リンク

2007/6/9(Sat) 00:37:32|NO.8843

どうにも方法が判らないので助けてください。

pokeを使ってリストからランダムに読み出した文字列をすべて伏字のように"□"で隠して
表示したいのですが、下記のスクリプトでは全角で30字を超えたあたりから
バッファオーバーフローのエラーが出てしまいます。

リストのテキスト文字数に制限をかけたくないので、
方法があれば是非アドバイスをお願いします。




*okikae nagasa=strlen(mojiretu) i=0 repeat poke mojiretu2,i,"□" i=i+2 if i= nagasa :goto *hyouji loop *hyouji mes mojiretu mes mojiretu2



この記事に返信する


GENKI

リンク

2007/6/9(Sat) 02:34:35|NO.8844

 ほんのちょっと付け加えるだけで、そのまま動作するスクリプトにできるんだから、どうせなら
そのままでちゃんと動作する(エラーが確認できる)スクリプトにして欲しかったです。
適当に

mojiretu="あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ" mojiretu2=""
と書き加えたら再現できたので、今回は問題無しです。

 mojiretu2のメモリが十分確保されていないために起きているエラーです。
通常変数に文字列を指定すると自動的に必要なメモリを確保してくれますが、poke命令は
やってくれないようです。ちなみに、mojiretu2=""と書くとsdim mojiretu2,64 と同等になる。
63文字分のメモリ確保なので全角のみでだと31文字分。「全角で30字を超えたあたりから…」の
理由はこれですね。また文字列についての詳細はマニュアル参照のこと。

 対処法は、sdimでmojiretu2に十分なメモリを確保することです。


mojiretu="あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ" mojiretu2="" sdim mojiretu2, strlen(mojiretu)+1 ;+1がみそ(終了コードnullの分です。) ;以下は同じ *okikae nagasa=strlen(mojiretu) i=0 repeat poke mojiretu2,i,"□" i=i+2 if i= nagasa :goto *hyouji loop *hyouji mes mojiretu mes mojiretu2



にと

リンク

2007/6/9(Sat) 11:29:16|NO.8851

GENKIさん的確なアドバイスをありがとうございました。
うまく動作させることが出来ました。

スクリプトの書き方は今後気をつけます。



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