icon

【array[1] = 】MortScript

Since 2007/02/22

1-100 101-200 201-300 301-400 401-500 501-600 601-700 701-800 801-900 901-990

759 :いつでもどこでも名無しさん:2007/10/13(土) 22:53:00 ID:MfXivqKt0
すみません質問させてください。
プログラムはじめてなのでトンチンカンなことしてたらすみません。
例えばwhile文を入れ子にして繰り返し処理をしたいのですが以下のスクリプトですと
0000〜9999を表示(1万回表示)させるのにsleepMessageを使ってるので最低1秒の設定で1万秒かかってしまいます。
処理してる進行状況を表示させるのに他によい方法ないでしょうか?

a = 0
b = 0
c = 0
d = 0
while(a<10)
 while(b<10)
  While(c<10)
   While(d<10)
    #abcdを表示
    SleepMessage(1,a & b & c & d)
    d = d + 1
   EndWhile
   d = 0
   c = c + 1
  EndWhile
  c = 0
  b = b + 1
 EndWhile
 b = 0
 a = a + 1
EndWhile

またWhile文を入れ子にしすぎるとメモリ食い過ぎで処理の途中で止まるとかあるんでしょうか?

760 ::2007/10/13(土) 23:21:56 ID:???0
>>759
動的に表示を変えるダイアログボックスやプログレスバーは
MortScriptには無いので、無理っぽいです。

While文を入れ子にしすぎた場合、「メモリを食う」というよりは
CPUに負荷が掛かり過ぎて重くなり、最悪フリーズする
といった状況は考えられますね。

761 :いつでもどこでも名無しさん:2007/10/13(土) 23:28:28 ID:???0
>>760
すばやい回答ありがとうございます。
表示はあきらめます。
while文は意図した動きをしないのですが(1000回超えたあたりでとまる)もう少し試行錯誤してみます。
ありがとうございました。

762 ::2007/10/14(日) 00:13:10 ID:???0
>>761
>>759のスクリプトの
SleepMessage(1,a & b & c & d) を削除し、
最後に Message(a & b & c & d) を追加して走らせたところ、
約30秒で処理を終了し、
問題なく「10000」を表示しました。
使用メモリは45kBでした。


1-100 101-200 201-300 301-400 401-500 501-600 601-700 701-800 801-900 901-990