ab.com コミュニティ
https://www.activebasic.com/forum/

アラームソフト作りました。
https://www.activebasic.com/forum/viewtopic.php?t=801
ページ 11

作成者:  MH35 [ 2006年3月09日(木) 17:21 ]
記事の件名:  アラームソフト作りました。

アラームソフトを作りました。ソースを書きます。
#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 [ 2006年3月21日(火) 17:20 ]
記事の件名:  補足

このソフトの肝は、時刻の設定形式です。
時・分・秒ともに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 [ 2006年3月28日(火) 12:43 ]
記事の件名:  170行目

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秒     "
しかし行番号が久しいですね。

作成者:  konisi [ 2006年3月28日(火) 13:57 ]
記事の件名:  GUI化

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

内部のコードで分からない所があったら説明しますので気楽にソースコードを読み進めてください。そして自分のものにしてください。

作成者:  MH35 [ 2006年3月30日(木) 17:52 ]
記事の件名:  ありがとうございました

ありがとうございました。ダウンロードしましたので後でゆっくり研究します。そういえば、ホームページから見るとリンクから孤立しているようですが何か理由でもあるのでしょうか。

作成者:  konisi [ 2006年3月30日(木) 18:43 ]
記事の件名: 

さすがに、人の作ったものを改良して発表するような真似はできませんよ。
作るなら関数を全て調べ上げて、コピーによる転載をせずに0から手打ちで打つほうが個人的にしっくり来るソフトが作れるのでね。
関数の使い方も頭に入るし。

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/