Deine Code ganz oben, kannste etwas verkürzen:
Delphi-Quellcode:
min := akt_sek div 60;
akt_sek := akt_sek - (min * 60);
{=}
akt_sek := akt_sek mod 60;
Das sieht dann so aus:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
akt_year : word; // Jahre
akt_month : word; // Monate
akt_day : word; // stunden
akt_std : word; // aktuelle Stunden
akt_min : word; // aktuelle Minuten
akt_sek : word; // aktuelle Sekunden
akt_mil : word; // Milli-Sekunden
begin
Form1.Caption := DateToStr(Now) + ' ' + TimeToStr(Now);
DecodeDateTime(Now,akt_year,akt_month,akt_day,akt_std,akt_min,akt_sek,akt_mil);
akt_std := akt_std + SpinEdit1.Value;
akt_min := akt_min + SpinEdit2.Value;
akt_sek := akt_sek + SpinEdit3.Value;
akt_min := akt_min + (akt_sek div 60);
akt_sek := akt_sek mod 60;
akt_std := akt_std + (akt_min div 60);
akt_min := akt_min mod 60;
akt_day := akt_day + (akt_std div 24);
akt_std := akt_std mod 24;
Label1.Caption := DateTimeToStr(EncodeDateTime(akt_year,akt_month,akt_day,akt_std,akt_min,akt_sek,akt_mil));
end;
Aber nun zurück zu deinem Problem.
Da kommst du auch ohne selbst die Monatslänge und Schaltjahre zu berücksichtigen hin.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var z: TDateTime;
begin
Z := Now;
Form1.Caption := DateToStr(z) + ' ' + TimeToStr(z);
Label1.Caption := DateTimeToStr(z + (SpinEdit1.Value / 24) +
(SpinEdit2.Value / 1440) + (SpinEdit3.Value / 86400));
end;