Schmeiss' die Edits für das Datum und die Uhrzeit wieder runter und nimm stattdessen 2 "TDateTimePicker". Den einen stellst du im Objektinspektor auf dtDate, den anderen auf dtTime (oder wie die hießen).
Dann änderst du den ordentlichen Code von oben wie folgt ab:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
VAR
EndDatum : TDateTime;
Aktuell : TDateTime;
Dazwischen : Integer;
Tage, Stunden, Minuten, Sekunden : Integer;
BEGIN
// Zeit von DTP2 dem DTP1 zuweisen, da er nur auf Date gestellt war
DateTimePicker1.Time := DateTimePicker2.Time;
EndDatum := DateTimePicker1.DateTime;
// Aktuellen Zeitstempel
Aktuell := Now;
// Sekunden dazwischen ausrechnen
Dazwischen := SecondsBetween(Aktuell, EndDatum);
// Hier kann man nun Sekunden in Tage, Stunden etc. umrechnen, dürfte mathematisch trivial sein
// KEIN Pseudocode mehr!
Tage := Dazwischen div (60*60*24);
Dazwischen := Dazwischen - (Tage * 60 * 60 * 24);
Stunden := Dazwischen div (60*60);
Dazwischen := Dazwischen - (Stunden * 60 * 60);
Minuten := Dazwischen div 60;
Dazwischen := Dazwischen - ( Minuten * 60);
Sekunden := Dazwischen;
// Auf Label anzeigen
Label1.Caption := Format('Noch %d Tage, %d Stunden, %d Minuten und %d Sekunden bis ' + Edit5.Text + '!', [Tage, Stunden, Minuten, Sekunden]);
END;