タイマー

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

タイマー

#1 投稿記事 by M.S. »

現在、“時間”・“分”・“秒” を別々に入力できるタイマーを作っています。
「分>0 And 秒<0」の時のコーディングは出来たのですが、
「時間>0 And 分<0 And 秒<0」と「時間<0 And 分<0 And 秒<0」が出来ません。
いろいろやってみましたが、どれも失敗するので質問することにしました。
コードは参考まで

よろしくお願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: タイマー

#2 投稿記事 by 7 »

> 「分>0 And 秒<0」の時のコーディングは出来たのですが、
その時の判定をしているのは以下のコードですよね?

コード: 全て選択

if buf_s<0 and buf_m>0 then
計算の優先順位が問題ではないかもしれませんけど、見やすいと思うのでまずは下のように変えましょう。

コード: 全て選択

if (buf_s<0) and (buf_m>0) then
(buf_s<0)がTRUE、で、(buf_m>0)もTRUE、なら何々、と簡単に読み直すことができます。たぶん。

> 「時間>0 And 分<0 And 秒<0」と「時間<0 And 分<0 And 秒<0」が出来ません。
さっき書いたことを踏まえ、以下のように書いてみた場合どうでしょう?

コード: 全て選択

if (buf_h>0) And (buf_m<0) And (buf_s<0) then
if (buf_h<0) And (buf_m<0) And (buf_s<0) then
分かってると思いますけど、たぶんElseIfSelect文を使うべきです。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Re: タイマー

#3 投稿記事 by M.S. »

>

コード: 全て選択

if (buf_s<0) and (buf_m>0) then
> (buf_s<0)がTRUE、で、(buf_m>0)もTRUE、なら何々、と簡単に読み直すことができます。たぶん。
>
> > 「時間>0 And 分<0 And 秒<0」と「時間<0 And 分<0 And 秒<0」が出来ません。
> さっき書いたことを踏まえ、以下のように書いてみた場合どうでしょう?
>

コード: 全て選択

if (buf_h>0) And (buf_m<0) And (buf_s<0) then
> if (buf_h<0) And (buf_m<0) And (buf_s<0) then
> 分かってると思いますけど、たぶんElseIfSelect文を使うべきです。

注釈を書き忘れていました、すいません。

ElseIf を使ってやってみたのですが、
時間>0、分<0、秒<0 になると、秒が「-1、-2、-3、…」となってしまいます。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: タイマー

#4 投稿記事 by 7 »

> 時間>0、分<0、秒<0 になると、秒が「-1、-2、-3、…」となってしまいます。
buf_s=buf_s-1が原因だと思います。秒の値がどうであろうがデクリメントしちゃってますから。
ElseIfの話ですけど、よく読んでたらこうした方が良いような気がしました。
※どういった処理がしたいのかよく分からないので相応しくないかもしれません 以下のコードは修正すべきだと思います。

コード: 全て選択

buf=Str$(buf_h*360+buf_m*60+buf_s)
count=Val(buf)

コード: 全て選択

count=(buf_h*360)+(buf_m*60)+(buf_s)
数値を文字に変換してそれを数値に変換しているだけです。文字をどこかで使うのかと思ったら数値に変換する為にしか使ってません。意味が無いと思います。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#5 投稿記事 by M.S. »

※どういった処理がしたいのかよく分からないので相応しくないかもしれません
すいませんが、書いて頂いたコードは、
僕が望む動作ではありませんでしたが、少し近い感じでした。

僕が望む動作は、簡単に言えば、Win32 プログラミング講座の、
「プログレスバーとタイマー処理」のプログラムを改良して、
秒だけでなく、分・時間も入力できて、
カウントが「hh 時間 mm 分 ss 秒」となるようにしたいのです。

最初から書いておけばよかったですね、すいませんでした。
pizz
記事: 5
登録日時: 2006年3月10日(金) 12:31
お住まい: 神奈川県

#6 投稿記事 by pizz »

わざわざ時分秒を管理せずに、表示のときだけ算出すればいいと思います。
Longは整数型なので、端数は自動的に切り落とされます。
ちなみに、みなさん「時」が360秒になってしまってますよ(>_<)
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#7 投稿記事 by M.S. »

> わざわざ時分秒を管理せずに、表示のときだけ算出すればいいと思います。
> Longは整数型なので、端数は自動的に切り落とされます。
>
> このコードで、僕が望んでいた動作が完全に実現されました。
皆さん、どうもありがとうございました。


> ちなみに、みなさん「時」が360秒になってしまってますよ(>_<)

あっ、ホントだ…
返信する