Selamlar herkese,
Projemde iki tane edit alanım var. Birincisi başlangıç zamanını, diğeri bitiş zamanını tutuyor. Açılış saatinin dakikası kapanış saatinin dakikasından küçük veya dakikasına eşit olursa herhangi bir hata yok.
Örnek: Açılış Saati:01:00 (01:45)
Kapanış Saati :05:45 (05:00)
Toplam Mesai : 4:45 (3:65531)
Buradaki Toplam Mesai ifadesini sorunsuz alıyorum. Ancak açılış dakikası kapanıştan büyük olursa o zaman (Yukarıdaki örmek için )Toplam Mesai'de 3:65531 şeklinde bir ifade oluyor. Bu nasıl düzeltilebilir?
Not: Kırımızı renkteki parantezli ifadeler ikinci duruma emsal teşkil etmektedir.
Saat farkı hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 11
- Kayıt: 01 Oca 2009 04:59
Saat farkı hatası
En son theaviator tarafından 05 May 2009 04:42 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Re: Saat farkı hatası
farkı hangi fonksiyon veya formül ile hesaplıyorsunuz.
Kod: Tümünü seç
ilk := Now;
Label1.Caption := FormatDateTime('"Start: " hh:nn:ss.zzz', ilk);
slepp(10000);
son := Now;
Label2.Caption := FormatDateTime('"Stop: " hh:nn:ss.zzz', son);
Label3.Caption := FormatDateTime('"Diff: " hh:nn:ss.zzz', son - ilk);
Bir kelimenin anlamını öğretsen bile yeter..



-
- Üye
- Mesajlar: 11
- Kayıt: 01 Oca 2009 04:59
Re: Saat farkı hatası
Hesaplamayı aşağıdaki şekilde yapıyorum.
procedure Timza.Edit3Change(Sender: TObject);
var
s1,s2,s3,d1,d2,d3,sn1,sn2,sn3,ms1,ms2,ms3:word;
begin
DecodeTime(StrToTime(Edit1.Text),s1,d1,sn1,ms1);
DecodeTime(StrToTime(Edit2.Text),s2,d2,sn2,ms2);
s3:=s2-s1;
d3:=d2-d1;
sn3:=sn2-sn1;
ms3:=ms2-ms1;
if (s3<10) and (d3<10) then
edit4.Text:='0'+IntToStr(s3)+':'+'0'+IntToStr(d3)
else
Edit4.Text:=IntToStr(s3)+':'+IntToStr(d3);
label5.Visible:=true;
edit4.Visible:=true;
end;
procedure Timza.Edit3Change(Sender: TObject);
var
s1,s2,s3,d1,d2,d3,sn1,sn2,sn3,ms1,ms2,ms3:word;
begin
DecodeTime(StrToTime(Edit1.Text),s1,d1,sn1,ms1);
DecodeTime(StrToTime(Edit2.Text),s2,d2,sn2,ms2);
s3:=s2-s1;
d3:=d2-d1;
sn3:=sn2-sn1;
ms3:=ms2-ms1;
if (s3<10) and (d3<10) then
edit4.Text:='0'+IntToStr(s3)+':'+'0'+IntToStr(d3)
else
Edit4.Text:=IntToStr(s3)+':'+IntToStr(d3);
label5.Visible:=true;
edit4.Visible:=true;
end;
Re: Saat farkı hatası
yukarıda verdiğim fonksiyonu kullansan, tam sana göre.
saat farkını verir.
farkıda DecodeTime() ile istediğin gibi parçala.
saat farkını verir.
farkıda DecodeTime() ile istediğin gibi parçala.
Bir kelimenin anlamını öğretsen bile yeter..



-
- Üye
- Mesajlar: 11
- Kayıt: 01 Oca 2009 04:59
Re: Saat farkı hatası
Teşekkürler Conari...