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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1215
急行1分遅れstick命令が使えない1未解決


急行1分遅れ

リンク

2007/12/15(Sat) 11:26:49|NO.12806

クリーナーをつくっていました。

;メモリクリーナー screen 0,180,120 title "メモリクリーナー" sysfont 17 ;GUIフォント使用 objmode 1,1 ;オブジェクトでGUIフォント使用&TAB移動許可 objsize 80,20 pos 50,90 : button "クリーン",*clean mem=10 *mainloop ;メインループ redraw 0 color 192,192,192 : boxf ;灰色に塗りつぶす per=sysinfo(33) ;物理メモリ使用率取得(%) all=sysinfo(34) ;物理メモリの全体サイズを取得 vac=sysinfo(35) ;空き物理メモリサイズの取得 all_i=all/1024/1024 ;MBに変換(整数部) all_d=all/1024\1024 ;小数部 vac_i=vac/1024/1024 ;MBに変換(整数部) vac_d=all/1024\1024 ;小数部 color : pos 10,10 : mes "全体物理メモリサイズ "+all_i+"."+all_d+"MB" pos 10,30 : mes "空き物理メモリサイズ "+vac_i+"."+vac_d+"MB" pos 10,50 : mes "物理メモリ使用率 "+per+"%" pos 10,70 : mes "クリーンサイズ(MB)"+mem+"%" redraw 1 stick key,10 if mem<100-10:if key&2:mem+10 if mem>10:if key&8:mem-10 wait 1 goto *mainloop *clean ;クリーナー部 title "クリーン中" alloc mem,all/100*(index+1*10) ;メモリ確保 alloc mem,64 ;領域縮小 title "クリーン終了" goto *mainloop
stick命令を使うとこうなりました。
エラーが発生しました
対処法を教えてください



この記事に返信する


Y-rin

リンク

2007/12/22(Sat) 00:20:32|NO.12867

mem という変数は、「全体のメモリサイズのうちの、何パーセントをクリーンするか」、
という数字を持つものですよね?
ですが、*clean内で、
>alloc mem,all/100*(index+1*10)
>alloc mem,64 ;領域縮小
と実行していますので、変数memは数字ではなく「文字列」になってしまいます。
文字列といっても空の文字列ですが。

なので、メモリをクリーンしたあとに、
>if mem<100-10:if key&2:mem+10
>if mem>10:if key&8:mem-10
と実行すると、文字列と数を比べる事になり、エラーになります。
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
また、クリーンするサイズですが、全体サイズのmemパーセントをクリーンしたいなら、
>all/100*(index+1*10)
ではなく、
all / 100 * mem または all * (0.01 * mem)
とするといいと思います。

なので、

*clean ;クリーナー部 title "クリーン中" alloc buf,all * (0.01 * mem) ;メモリ確保 alloc buf,64 ;領域縮小 title "クリーン終了" goto *mainloop
とするといいと思います。



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