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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0506
Shoo時刻の計算4解決


Shoo

リンク

2009/5/6(Wed) 19:53:04|NO.25005

残り時間を、ミリセコンドまでカウントダウンしたいのですが
計算部分が、うまくいかずエラーが出てしまいます。

変数を、どのように扱ったらいいのでしょうか?



#include "hgimg3.as" screen 0,1024,768 title "カウントダウン時計" ; 曜日文字列を配列に設定 Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" boxf 0, 0, 1024, 140 ; 時刻表示部分を塗りつぶし color 0, 255, 0 pos 230,0 font "MS ゴシック" ,135 ,17 mes "現在時刻" repeat; 日付データを書式化 Year = ""+gettime(0)+"" ; 西暦年(4桁:yyyy) Month = strf("%02d", gettime(1)) ; 月 (2桁:MM) Week = Weeks(gettime(2)) ; 曜日 (文字列) Day = strf("%02d", gettime(3)) ; 日 (2桁:dd) Hour = strf("%02d", gettime(4)) ; 時間 (2桁:hh) Minute = strf("%02d", gettime(5)) ; 分 (2桁:mm) Second = strf("%02d", gettime(6)) ; 秒 (2桁:ss) MSecond = strf("%03d", gettime(7)) ; ミリ秒(3桁:xxx) ;変数 Time にまとめる Time = Year + "/" + Month + "/" + Day + "(" + Week + ") " Timee = Hour + ":" + Minute + ":" + Second + ":" + MSecond Rem = Year-Y + "/" + Month-M + "/" + Day-D + "(" + Week + ") " Remm = Hour-H + ":" + Minute-Min + ":" + Second-Sec + ":" + MSecond-MS Y =2010 M =10 D =10 H =10 Min =10 Sec =10 MS =10 redraw 0 ; ちらつきをなくすため仮想描画 color 0, 0, 0 ; 塗りつぶし色を白 boxf 0, 140, 1024, 768 ; 時刻表示部分を塗りつぶし pos 0, 140 ; カレントポジションをに指定 color 0, 255, 0 ; 文字色を黒 font "MS ゴシック" ,135 ,17 mes Time ; 現在時刻を表示 pos 100, 280 mes Timee color 255, 0,0 pos 250, 400 mes "残り時間" mes Rem mes Remm redraw 1 ; 実際に描画反映 wait 1 ; ウェイト onexit *exit loop *exit end <\pre>



この記事に返信する


SYAM

リンク

2009/5/6(Wed) 20:11:32|NO.25006

文字列変数と数値変数をごっちゃにしていませんか?

文字列変数は あくまで 文字をあらわすものであって、数値ではないです。
ですから、数値と同じように計算はできません。
エラーは、文字列変数から引き算をしようとしているところで起きています。

int関数でいったん数値に直すなり、最初から数値としても保存しておくなりしましょう。



Shoo

リンク

2009/5/8(Fri) 00:12:10|NO.25038

分けてやってみたらうまくいきました。


しかし、”残り時間”表示の部分が、ゼロが消えてしまいます。

どこに、”%02d”を入れたらよいのでしょうか?



; 簡易デジタル時計 for Hot Soup Processor 3.x ; Altキーなどを押すとHSPシステムの動作が止まってしまうため ; 表示も停止してしまいます(仕様) #include "hgimg3.as" screen 0,1024,768 title "簡易デジタル時計" ; 曜日文字列を配列に設定 Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" boxf 0, 0, 1024, 140 ; 時刻表示部分を塗りつぶし color 0, 255, 0 pos 230,0 font "MS ゴシック" ,135 ,17 mes "現在時刻" //設定時刻 Yr = 2013 Mr = 10 Dr = 10 Hr = 10 Minr = 10 Secr = 60 MSr = 1000 repeat; 日付データを書式化 Year = ""+gettime(0)+"" ; 西暦年(4桁:yyyy) Month = strf("%02d", gettime(1)) ; 月 (2桁:MM) Week = Weeks(gettime(2)) ; 曜日 (文字列) Day = strf("%02d", gettime(3)) ; 日 (2桁:dd) Hour = strf("%02d", gettime(4)) ; 時間 (2桁:hh) Minute = strf("%02d", gettime(5)) ; 分 (2桁:mm) Second = strf("%02d", gettime(6)) ; 秒 (2桁:ss) MSecond = strf("%03d", gettime(7)) ; ミリ秒(3桁:xxx) ;変数 Time にまとめる Time = Year + "/" + Month + "/" + Day + "(" + Week + ") " Timee = Hour + ":" + Minute + ":" + Second + ":" + MSecond //文字列→整数変換 Y =int(Year) M =int(Month) D =int(Day) H =int(Hour) Min =int(Minute) Sec =int(Second) MS =int(MSecond) //計算 Ya = Yr-Y Ma = Mr-M Da = Dr-D Ha = Hr-H Mina = Minr-Min Seca =Secr-Sec MSa =MSr-MS //整数→文字列変換 Yw = str(Ya) Mw = str(Ma) Dw = str(Da) Hw = str(Ha) Minw = str(Mina) Secw = str(Seca) MSw = str (Msa) Rem = Yw + "年 " + Mw + "月 " + Dw + "日 " Remm = Hw + ":" + Minw + ":" + Secw + ":" + MSw redraw 0 ; ちらつきをなくすため仮想描画 color 0, 0, 0 ; 塗りつぶし色を白 boxf 0, 140, 1024, 768 ; 時刻表示部分を塗りつぶし pos 30, 145 ; カレントポジションを(0, 18)座標に指定 color 0, 255, 0 ; 文字色を黒 font "MS ゴシック" ,130 ,17 mes Time ; 現在時刻を表示 pos 100, 270 mes Timee color 255, 0,0 pos 250, 390 mes "残り時間" pos 90, 510 mes Rem mes Remm redraw 1 ; 実際に描画反映 wait 1 ; ウェイト onexit *exit loop *exit end <\pre>



窓口

リンク

2009/5/8(Fri) 00:44:59|NO.25039

ただの「str」になってました


//整数→文字列変換 yw =strf("%02d", ya) mw =strf("%02d", ma) dw =strf("%02d", da) hw =strf("%02d", ha) Minw = str(Mina) Secw = str(Seca) MSw = str (Msa)



Shoo

リンク

2009/5/9(Sat) 01:01:33|NO.25049

お、そんなことだったか

完成したら、UPします



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