喫茶XRAYトップページ

[▲前のスレッド]

[1063] 教えてHourBetween返信 削除
2007/1/17 (水) 21:24:09 Syake
マスター 今晩は

DateUtilsのHourBetWeenでしたっけ、AとBの時間差?を求める関数
var
  STime,ETime :TTime;
 intA,intB :Word;
begin
  STime := StrToTime('8:00'); //半端な分数はシステム上無い
  ETime := StrToTime('21:00');
 intA := HourBetween(STime,ETime) + 1;
  //intA当然"14"
 STime := StrToTime('8:00');
  ETime := StrToTime('22:00');
 intA := HourBetween(STime,ETime) + 1;
  //intBは当然・・・!? あれ"14"

どうも、計算結果が変ですね。
これって、時間が実数管理!?の関係なのでしょうか?

結局、取り敢えず時間差が問題だったので
var
  STime,ETime :TTime;
 SH,LH :Word;
 intA,intB :Word;
begin
  STime := StrToTime('8:00');
  ETime := StrToTime('21:00');
  SH := HourOf(STime);
  SL := HourOf(LTime);
  intA := (SL - SH) + 1;
で、切り抜けました。

 

[1064] Re:教えてHourBetween返信 削除
2007/1/17 (水) 23:59:59 Mr.XRAY
> DateUtilsのHourBetWeenでしたっけ、AとBの時間差?を求める関数

へ〜え、こんなの知りませんでした。
で、日付時刻ルーチンをヘルプで見てみました。いろいろあるんですね。

以下のコードでやってみました。どうでしょう。
日付時刻ルーチンの初心者ですので...

動作確認 WindowsXP(SP2) + Delphi6
(注意: Delphi5にはない関数を使用しています)

procedure TForm1.Button1Click(Sender: TObject);
var
  STime,ETime :TTime;
  SH :Word;
  A : Double;
begin
  STime := StrToTime('8:00');
  ETime := StrToTime('21:00');
  A:=DaySpan(STime,ETime);
  SH:=HourOf(A);
end;



[1065] Re2:教えてHourBetween返信 削除
2007/1/19 (金) 09:33:17 Syake
▼ Mr.XRAYさん
> > DateUtilsのHourBetWeenでしたっ
HoursBetween でしたね。
しかし、まあ、なんと言うか、しっくりこないような・・・
 
DateUtilsは重宝します。
> procedure TForm1.Button1Click(Sender: TObject);
> var
>   STime,ETime :TTime;
>   SH :Word;
>   A : Double;
> begin
>   STime := StrToTime('8:00');
>   ETime := StrToTime('21:00');
>   A:=DaySpan(STime,ETime);
>   SH:=HourOf(A);
> end;

は、良いようですね。
でも、HoursBetweenも、たまたま「あれっ!?」て事がわかったので
ちょっと心配(^_^;)。
まあ、その時はその時で・・・


[1067] Re3:教えてHourBetween返信 削除
2007/1/19 (金) 20:11:06 Mr.XRAY
> DateUtilsは重宝します。

Delphi6からかなり拡張されていますね。
他のものもそうですが、Delphi5をサポートから除外すれば、拙作コンポの
コードももう少し整備できそう。

ところでSyakeさん、以前プレビューフォームのタイトルに[Mr.XRAY]と表示
されてしまうやつ、あれコンポのバグでしたね。スミマセン。
前のバージョンではFormのCaptionプロパティ値が反映されているハズでし
た。近いうちに、他のも含めて修正します。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82