アラームソフト作りました。

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
返信する
メッセージ
作成者
MH35
記事: 24
登録日時: 2006年3月09日(木) 17:09
連絡する:

アラームソフト作りました。

#1 投稿記事 by MH35 »

アラームソフトを作りました。ソースを書きます。
#N88BASIC
10 dim hour As Integer
13 dim min As Integer
15 dim sec As Integer
20 dim chk As String
23 dim chk1 As String
25 dim chk2 As String
28 dim chk3 As String
29 dim chk4 As String
30 print "何時";
40 input hour
50 If hour<0 or hour>23 Then goto 30
60 print "何分";
70 input min
80 If min<0 or min>59 Then goto 60
90 print "何秒";
100 input sec
110 If sec<0 or sec>59 Then goto 90
112 If hour<10 Then chk1="0"+Str$(hour As Double) Else chk1=Str$(hour As Double)
115 If min<10 Then chk2="0"+Str$(min As Double) Else chk2=Str$(min As Double)
117 If sec<10 Then chk3="0"+Str$(sec As Double) Else chk3=Str$(sec As Double)
120 chk=chk1+":"+chk2+":"+chk3
130 print chk
140 print "この時刻でよろしいならyを、そうでなければnを入力してください。";
150 input chk4
160 If chk4="n" or chk4="N" Then goto 30
170 If chk4<>"y" and chk4<>"Y" Then goto 140
180 If chk<>Time$() Then goto 180
200 print "時間です。"
210 beep
改良するにはどうすればよいのでしょうか。GUIにしたいと思っているのですが、自分ではできません。どうすればよいのでしょう。
MH35
記事: 24
登録日時: 2006年3月09日(木) 17:09
連絡する:

補足

#2 投稿記事 by MH35 »

このソフトの肝は、時刻の設定形式です。
時・分・秒ともに1桁の場合は常に10の位に0が補われる。…(イ)
例1.11時14分27秒→11:14:27
例2.11時14分3秒→11:14:03
例3.11時9分16秒→11:09:16
例4.11時9分7秒→11:09:07
例5.8時16分19秒→08:16:19
例6.8時16分3秒→08:16:03
例7.8時9分19秒→08:09:19
例8.8時9分3秒→08:09:03

50行・80行・110行がないと無限ループに陥るおそれがあります。
なぜならここで入力値のチェックを行っているからです。
112行から117行までは(イ)に従ったフォーマットに変形する手順です。
無効な入力のチェックは150行での入力でも必要でそれが
160行・170行です。あとは180行で時間がくるまで待たせるだけです。
時間がきたら190行・200行が実行されておしまいというわけです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

170行目

#3 投稿記事 by konisi »

180行目前後において、後何秒であるかを出力し続ける機能を追加してみました。

コード: 全て選択


'差分
16 Dim Time As String
17 Dim st As SYSTEMTIME
18 Dim Remainder$ As String
19 Dim Remainder As Long

171 If Time=Time$() Then goto 171
172 GetLocalTime(st)
173 Remainder=((hour-st.wHour)*3600+(min-st.wMinute)*60+(sec-st.wSecond)+24*3600) Mod (24*3600)
174 Remainder$=Str$(Int(Remainder/3600))+"時間"+Str$(Int(Remainder/60) Mod 60)+"分"+Str$(Remainder Mod 60)+"秒"
175 Locate 0,5
176 Print Remainder$+"  "

'書き換え
180 If chk<>Time$() Then goto 171

'差分
181 Locate 0,5
182 Print "0時間0分0秒     "
しかし行番号が久しいですね。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

GUI化

#4 投稿記事 by konisi »

暇だったのでGUI化もしてみました。
アラームとタイマーの書き分けができずにプロジェクト名がおかしくなってますがご愛嬌^^
http://web1.nazca.co.jp/himajinn13sei/BasicTimer.zip
(最終更新:2006年3月28日14時20分)

内部のコードで分からない所があったら説明しますので気楽にソースコードを読み進めてください。そして自分のものにしてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
MH35
記事: 24
登録日時: 2006年3月09日(木) 17:09
連絡する:

ありがとうございました

#5 投稿記事 by MH35 »

ありがとうございました。ダウンロードしましたので後でゆっくり研究します。そういえば、ホームページから見るとリンクから孤立しているようですが何か理由でもあるのでしょうか。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#6 投稿記事 by konisi »

さすがに、人の作ったものを改良して発表するような真似はできませんよ。
作るなら関数を全て調べ上げて、コピーによる転載をせずに0から手打ちで打つほうが個人的にしっくり来るソフトが作れるのでね。
関数の使い方も頭に入るし。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する