時間のズレ?

解決


NEO  2002-01-22 04:30:20  No: 476

タイマーイベントに
Label1.Caption := DateTimeToStr(Now);
として、リアルタイムに時間を更新表示するようにしたんですが、
どうも一瞬(0.5秒くらい)ずれるみたいなんです。

個人的にTClockなどの秒が出るタスクバー時計を利用してるんですが、
どうしても少しずれます。
インターバルを変えてもあまり変化がありません。

ずれるのは仕方ないのでしょうか?(あるいはTclockのせい?)ピタリあわせる方法があればお教えいただけると幸いです。


にしの  2002-01-22 05:00:22  No: 477

TClockの時刻と、「日付と時刻のプロパティ」を並べてみてください。
少しだけずれる場合がありますが、これのことでしょうか。
これは、TClockが遅れているのだと思います。
もし、同じようにしたいのであれば、取得した時刻を少し遅らせて表示すればよいのでは?


NEO  2002-02-09 06:34:44  No: 478

お返事がおそくなってすみません。

いろいろと試してみたんですが、
同じプログラムをコピーして2つ起動すると、
やはりそれぞれのプログラムで微妙に秒が変わります。

誤差だとあきらめるか、Win32APIでも使うしかないのでしょうか…。


にしの  2002-02-09 09:23:25  No: 479

環境がどうなのか、同じプログラムというのがどういうもので、どういう処理をしてから時刻を表示しているかわかりませんが、単純にTEditとTTimerを貼り付けて、OnIntervalで、Edit1.Text := DateTimeToStr(Now)を実行させるプログラムを2つ立ち上げて見ていましたがかわりませんね。
# Win2k pro+Delphi5Pro

CPUやグラフィックボードの違いにもよるかもしれませんが、そこまでして同じにしたいのですか?
誤差としてあきらめられるのであれば、そうしたほうがよいと思います。
僕ならそうします。
# 仕様などにより諦められない場合もあります。

もし、同じPC内で同時に起動するアプリケーションで、時刻の表示をぴったり同じにしたければ、それぞれアプリケーションが同期を取って、タイミングをあわせて再描画する必要が出てくるかと思います。
Win32APIを使おうが、VCLを使おうが、時間を取得して描画するまでに手間取れば、どちらにしろ遅れます。
その遅れは、同じアプリケーションでも必ず一致するものではありません。
同時に起動しているプロセスによります。
# もちろん、explorer.exeやtaskmonなども関係してきます

もしかしたら、CPUを複数載せて、1プロセス1CPUにすれば一致できるかもしれません。
非現実的ではありますが。


NEO  2002-02-10 06:20:31  No: 480

なるほど…。

なんとなく細かい点として引っかかっていましたが、
あえて気にしないことにします。

いちおう環境的にはW2kProでP3-1G*2です。
どうも気になったものでして…。
ご指導ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加