◆□□□□□□□□□□□□□□□□□□□□□□□□□□□◆ HSPであなたもプログラマー 発行者そらとす 第十九回 “時間を取得”2001/11/24 MAIL:soratosu@24i.net HP:http://www3.to/soratosu/ ◆□□□□□□□□□□□□□□□□□□□□□□□□□□□◆ どうもこんいちは。 あ〜マ?の19回目です。 ☆初めての方へ バックナンバーをご覧下さい。 http://www.dragoncity.ne.jp/~soratosu/merumaga.html 一括DL:http://www.dragoncity.ne.jp/~soratosu/ikkatsu.lzh ☆前回 bsaveをしました。詳しくはバックナンバーで。 ☆今回 今回は時間を取得してみたいと思います。 使う命令は、「gettime」というめいれいです。 パラメータは gettime (取得した物を格納する変数),(下のどれかの番号) 0 年(Year) 1 月(Month) 2 曜日(DayOfWeek) 3 日(Day) 4 時(Hour) 5 分(Minute) 6 秒(Second) 7 ミリ秒(Milliseconds) となっています。 たとえば、何時かを知りたいときは、 gettime hour,4 とすれば、変数hourに何時かが格納されます。 では時計を作って見ましょう。 ;======================== *start gettime a,4 gettime b,5 gettime c,6 mes ""+ a +":"+ b +":"+ c +"" button "更新",*start stop ;======================= これが一番単純な時計です。 次にちょっとレベルアップして、 タイトルバーのところに随時更新される時計を作って見ます。 ;####################### screen 0,130,0 *start gettime a,4 gettime b,5 gettime c,6 title ""+ a +":"+ b +":"+ c +"" wait 1 goto *start ;###################### あんまりかわってないでしょ? ここで一番重要なのは「wait 1」です。 前にも書きましたが、これを入れないとWINDOWSのタスクをほとんど奪ってしまって、 えらいことになります。絶対入れてください。 さらにレベルアップして、ウィンドウに表示します。 但し、こうするとだめです。 ;$$$$ 失敗例 $$$$$ *start gettime a,4 gettime b,5 gettime c,6 mes ""+ a +":"+ b +":"+ c +"" wait 1 goto *start ;$$$$ 失敗例 $$$$$ なんでだめかというとどんどん下のほうにカレントポジションがいくのでしばらくすると 見えなくなってしまいます。 ;$$$$ 失敗例2 $$$$$ *start cls gettime a,4 gettime b,5 gettime c,6 pos 0,0 mes ""+ a +":"+ b +":"+ c +"" wait 1 goto *start ;$$$$ 失敗例2 $$$$$ これではまずまずちらつきが増えます。 ;&&&& OK &&&& *start redraw 0 cls gettime a,4 gettime b,5 gettime c,6 pos 0,0 mes ""+ a +":"+ b +":"+ c +"" redraw 1 wait 1 goto *start ;&&&& OK &&&& これならかなりマシになります。 注意する点は、redraw 1の後に必ずウェイトをいれて画面を更新させる必要があります。 でもこれでは、遅いです。そう、clsが思いのです。 ;%%%%% OK2 %%%%%%%%%%%%%%%%% *start redraw 0 color 255,255,255 boxf 0,0,130,20 gettime a,4 gettime b,5 gettime c,6 color 0,0,0 pos 0,0 mes ""+ a +":"+ b +":"+ c +"" redraw 1 wait 1 goto *start ;%%%%%% OK2 %%%%%%%%%%%%%%%%%% これはカンペキです。速いしちらつきもほとんど無い。 以上終了。 次回は…なんにしよう? 質問、感想、わからないところなどがあればお気軽にメールください。