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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0404
ペンチ1日ごとに変数加算する方法8解決


ペンチ

リンク

2014/4/4(Fri) 12:42:44|NO.61349

変数について質問です。
変数はアプリケーションを終了すると、クリアに
なりますよね。
私は、1日経過するごとに変数に+1をしたいのですが
どうしたらよいでしょうか。
以下のようなものを作りたいと思ってます。

指定した日から現在は何日経ったかというような感じです。
<詳細>
例)
2014/4月1日から1日経って
2014/4月2日になる。
それに伴って変数に+1をする。

「現在 4月1日から ○○ 日目です」
と表示したいです。

この方法以外にも何かいい方法はないでしょうか。



この記事に返信する


テンクス

リンク

2014/4/4(Fri) 12:51:46|NO.61350

指定した日を
bsave
で保存して
次起動した時に
bload
で読み込んで保存した日と起動した日を計算

これでどうでしょうか?



ペンチ

リンク

2014/4/4(Fri) 13:13:18|NO.61352

サンプルコードを書いていただけると
助かります。



YSR

リンク

2014/4/4(Fri) 13:15:05|NO.61353

 「日数の差(経過日数)を計算する方法が知りたい」という意味と解釈して答えます。

 一番手っ取り早い方法としては、基準となる日付(例えば1900/1/1)を定め、
その日からの経過日数をそれぞれの日付について求めて差を取ることです。
 経過日数の計算方法としては、
  ・まず求める日付と基準となる日付との間にある閏年の数を数える
  ・次に「年」について、閏年と平年とを考慮して日数計算する
  ・そして「月」に関して日数を計算し、最後に「日」の日数を足す
となります。口では説明しにくいので次のページなどを参考にして下さい。
http://ufcpp.net/study/algorithm/o_days.html

 ……なお、経過日数の計算には「開始日を含めるか含めないか」という問題が
絡んでくるので、プログラミングの際には注意が必要です。また、厳密に書くならば、
古い日付からの差を計算する際には暦の違いも考慮する必要があります。
(まあ、グレゴリウス暦以外を使用することは歴史・天文分野以外では稀ですが)



ペンチ

リンク

2014/4/4(Fri) 13:19:36|NO.61354

皆さんの説明はわかったのですが
どのように作ったらいいのかわかりません。
プログラムコードを書いてください。
お願いします。



YSR

リンク

2014/4/4(Fri) 13:25:02|NO.61355

 こういったコードを自力で書いてみることはいい勉強になると思うのですが……。
 とりあえず昔書いたコードを晒しておきますね。
(注:画面上−画面下の経過日数を計算するミニツール)

;何年何月何日と何年何月何日との日付の差を計算します。 ;尚、グレゴリオ暦を使用しているので、 ;グレゴリオ暦制定の1582年以降に有効です。 #packopt name "day_gap" #module #defcfunc allday int date1,int date2,int date3 ;初期設定 dim yearplus,12,2 yearplus(0,0)=0 :yearplus(0,1)=0 yearplus(1,0)=31 :yearplus(1,1)=31 yearplus(2,0)=59 :yearplus(2,1)=60 yearplus(3,0)=90 :yearplus(3,1)=91 yearplus(4,0)=120 :yearplus(4,1)=121 yearplus(5,0)=151 :yearplus(5,1)=152 yearplus(6,0)=181 :yearplus(6,1)=182 yearplus(7,0)=212 :yearplus(7,1)=213 yearplus(8,0)=243 :yearplus(8,1)=244 yearplus(9,0)=273 :yearplus(9,1)=274 yearplus(10,0)=304 :yearplus(10,1)=305 yearplus(11,0)=334 :yearplus(11,1)=335 ;閏年判定 flg=0 if date1\4=0 :flg=1 if date1\100=0 :flg=0 if date1\400=0 :flg=1 ;date2月date3日→date_d日 date_d=yearplus(date2-1,flg)+date3 ;date1年→date_y日 date1_2=date1-1 uru=date1_2/4-date1_2/100+date1_2/400 ;date1-1年までの閏年の数 date_y=(date1_2-uru)*365+uru*366 ;a-1年までの日数 ;date_d日+e日→f日 date4=date_d+date_y return date4 #global year_1 =gettime(0) month_1=gettime(1) day_1 =gettime(3) year_2 =1995 month_2=1 day_2 =17 year_3 =0 month_3=0 day_3 =0 screen 0,300,120 title "日付の差 - 未計算" objsize 40,20 pos 40,10 :input year_1 pos 84,10 :mes "年" pos 110,10 :input month_1 pos 154,10 :mes "月" pos 180,10 :input day_1 pos 224,10 :mes "日" pos 40,40 :input year_2 pos 84,40 :mes "年" pos 110,40 :input month_2 pos 154,40 :mes "月" pos 180,40 :input day_2 pos 224,40 :mes "日" pos 15,40 :mes "−" pos 250,10 :mes "(後)" pos 250,40 :mes "(前)" line 10,70,280,70 pos 40,80 :input year_3 pos 84,80 :mes "年" pos 110,80 :input month_3 pos 154,80 :mes "月" pos 180,80 :input day_3 pos 224,80 :mes "日" pos 250,80 :mes "(差)" repeat stick ky if ky&32 :gosub *calc if ky&128 :end await 5 loop *calc ;何年何月何日と何年何月何日との日付の差を計算 g_day_1=allday(year_1,month_1,day_1) g_day_2=allday(year_2,month_2,day_2) g_day_3=g_day_1-g_day_2 if g_day_3<0 :title "日付の差 - ERROR" :return title "日付の差 - "+g_day_3+"日" year_3=g_day_3/365 :g_day_3=g_day_3\365 month_3=g_day_3/30 :g_day_3=g_day_3\30 day_3=g_day_3 objprm 6,year_3 objprm 7,month_3 objprm 8,day_3 return

※自力で組んでからデバッグしたい時は、http://birth.twitter-tools.net/なんかが便利。



ペンチ

リンク

2014/4/4(Fri) 13:26:56|NO.61356

アプリケーションを終了しても記録が
消えないようにするにはどこに
何を入れたらいいでしょうか?



YSR

リンク

2014/4/4(Fri) 13:30:07|NO.61357

 終了時に保存したい情報を記したファイルを保存すれば良いかと思います。
 例えば「変数の値を文字列として、notesel命令とnotesave命令で保存し、
起動時に当該ファイルが存在すればnotesel命令とnoteload命令で読み込む」
といった方法が考えられます。保存時の日付も知りたければ、テキストとして
同じファイルに書き込んでおけばいいのです。



ペンチ

リンク

2014/4/4(Fri) 13:31:00|NO.61358

皆さん、回答ありがとうございました。
おかげさまで、できました。



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