0

Delphi に問題があります。作業時間を計算するプログラムを作成しました。これはコードの一部です。

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z,a1,b1,c1,d1,e1,f1:TTime;
begin
  a := StrToTime(Edit1.Text);
  b := StrToTime(Edit2.Text);
  c := StrToTime(Edit3.Text);
  d := StrToTime(Edit4.Text);
  e := StrToTime(Edit5.Text);
  f := StrToTime(Edit6.Text);
  g := StrToTime(Edit7.Text);
  h := StrToTime(Edit8.Text);
  i := StrToTime(Edit9.Text);
  l := StrToTime(Edit10.Text);
  m := StrToTime(Edit11.Text);
  n := StrToTime(Edit12.Text);
  o := StrToTime(Edit13.Text);
  p := StrToTime(Edit14.Text);
  q := StrToTime(Edit15.Text);
  r := StrToTime(Edit17.Text);
  s := StrToTime(Edit18.Text);
  t := StrToTime(Edit19.Text);
  u := StrToTime(Edit20.Text);
  v := StrToTime(Edit21.Text);
  z := StrToTime(Edit22.Text);
  a1 := StrToTime(Edit23.Text);
  b1 := StrToTime(Edit24.Text);
  c1 := StrToTime(Edit25.Text);
  d1 := StrToTime(Edit26.Text);
  e1 := StrToTime(Edit27.Text);
  f1 := StrToTime(Edit28.Text);
  Memo1.Text:=TimeTostr(b-a+d-c+f-e+h-g+l-i+n-m+o-n+q-p+s-r+u-t+z-v+b1-a1+d1-c1+f1-e1);
end;

end.    

しかし、計算をクリックすると、合計が 24 時間を超えて 0 に戻った場合、どうすれば修正できますか?

ありがとう

4

2 に答える 2

4

あなたが本当に意図していることについて推測する必要がありますが、 と は (それぞれ) 就業日の開始と終了を表し、 と aなどもそうです。次に、の代わりに、bcdb - a + d - c + ...

HoursBetween(a, b) + HoursBetween(c, d) + ...

( uses DateUtils)。

アップデート

コメントで、OPは議事録も見るように要求しました。行う:

var
  minspan: integer;

...

minspan := MinutesBetween(a, b) + MinutesBetween(c, d) + ...;
Memo1.Text := IntToStr(minspan div 60) + ':' + IntToStr(minspan mod 60);
于 2012-06-01T10:35:37.857 に答える
1

これは、当面の問題を解決する方法です。

  1. TotalTimea、b、cなどを宣言した方法で新しい変数を宣言します。

  2. 次に、最後の行を削除して、次のように置き換えます。

.

 TotalTime := b-a+d-c+f-e+h-g+l-i+n-m+o-n+q-p+s-r+u-t+z-v+b1-a1+d1-c1+f1-e1;
 Memo1.Text:= IntToStr(Trunc(TotalTime))+' day(s), '+ TimeTostr(TotalTime);

次のように表示されます。 3 day(s), 07:04:45

この変更に加えて、私があなただったら、アプローチ全体を再考します。ここで他の人が言っていることから学び、反対票や否定的なコメントに影響されないようにしてください.

于 2012-06-01T14:55:04.543 に答える