(21-07-2024, Saat: 00:36)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:(20-07-2024, Saat: 23:30)Kral Adlı Kullanıcıdan Alıntı: Merhaba,
Normal şartlarda saat hesaplama yönteminde 02:00:00'dan, 01:00:00 çıkınca kalan sonuç 01:00:00 bu işlem için aşağıdaki kodu kullanıyorum.
LabelDuration.Text := TimeToStr(StrToTime(EditIn.Text) - StrToTime(EditOut.Text));
İşin içine freme girince bunu nasıl yaparım 02:00:00:24'den, 01:00:00:12 çıkınca 01:00:00:12 sonucu nasıl alabilirim?
Şimdi den yardımcı olanlara teşekkür ederim.
Aşağıdaki gibi bir kod kullanabilirsiniz:
uses System.DateUtils, System.TimeSpan; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ATime1, ATime2 : TTime; AMilliSecond1, AMilliSecond2 : Integer; ATimeSpan : TTimeSpan; AValue : String; begin ATime1 := EncodeTime(02, 00, 00, 24); ATime2 := EncodeTime(01, 00, 00, 12); AMilliSecond1 := TimeToMilliseconds(ATime1); AMilliSecond2 := TimeToMilliseconds(ATime2); ATimeSpan := TTimeSpan.FromMilliseconds( Abs(AMilliSecond1 - AMilliSecond2) ); AValue := Format( '%.2d:%.2d:%.2d:%.2d%', [ ATimeSpan.Hours, ATimeSpan.Minutes, ATimeSpan.Seconds, ATimeSpan.Milliseconds ] ); ShowMessage('Fark:' + AValue); end;
Hocam Kodları kendime göre düzenledim ancak giriş 01:00:00:14 çıkış 02:00:00:13 olunca yani kare alanı büyük olunca doğru sonucu alamadım.

Bu sorunu nasıl çözerim?
procedure TMainForm.Button1Click(Sender: TObject);
var
AValue: String;
ATimeSpan: TTimeSpan;
ATime1, ATime2: TTime;
AMilliSecond1, AMilliSecond2: Integer;
HourI, MinuteI, SecondI, SquareI: Word;
HourO, MinuteO, SecondO, SquareO: Word;
begin
HourI := StrToInt(Copy(Edit1.Text, 1, 2));
MinuteI := StrToInt(Copy(Edit1.Text, 4, 2));
SecondI := StrToInt(Copy(Edit1.Text, 7, 2));
SquareI := StrToInt(Copy(Edit1.Text, 10, 2));
//
HourO := StrToInt(Copy(Edit2.Text, 1, 2));
MinuteO := StrToInt(Copy(Edit2.Text, 4, 2));
SecondO := StrToInt(Copy(Edit2.Text, 7, 2));
SquareO := StrToInt(Copy(Edit2.Text, 10, 2));
//
ATime1 := EncodeTime(HourI, MinuteI, SecondI, SquareI);
ATime2 := EncodeTime(HourO, MinuteO, SecondO, SquareO);
//
AMilliSecond1 := TimeToMilliseconds(ATime1);
AMilliSecond2 := TimeToMilliseconds(ATime2);
ATimeSpan := TTimeSpan.FromMilliseconds(Abs(AMilliSecond1 - AMilliSecond2));
AValue := Format('%.2d:%.2d:%.2d:%.2d%', [ATimeSpan.Hours, ATimeSpan.Minutes, ATimeSpan.Seconds, ATimeSpan.Milliseconds]);
Showmessage('Fark:' + AValue);
end;

