Forum: Win32/Win64 API (native code)
by himitsu,
27. Jan 2008
nja, ganz ehrlich ... mit einem umweg über sowas wie TFileTime, TDateTime oder ähnliches ist es natürlich einfacher, da diese in Zeit seit einem bestimmten Zeitpunkt rechnen und somit das ganze Zeugs wie unterschiedlich lange Monate und Schaltjahre anders/einfacher gehandhabt werden kann.
+ 1 Tag
Inc(Time.wDay);
If Time.wDay > DaysInMonth(Time.wMonth, Time.wYear) Then Begin
Time.wDay :=...
Forum: Win32/Win64 API (native code)
by himitsu,
27. Jan 2008
meinst du mich? (@Muetze1)
mSecs = MilliSeconds :angel2:
klar hab ich dich verstanden ... beim Addieren mußt du halt drauf achten, daß die Werte im gültigen Bereich bleiben.
Also wenn zu 59 Sekunden eine Sekunde zuaddiert wird, dann kommt 0 raus und zu Minute muß 1 zuaddiert werden.
Forum: Win32/Win64 API (native code)
by himitsu,
27. Jan 2008
wieso soll man da nix zuweisen können?
function AddTime(Time: TSystemTime; mSecsToAdd: int64): TSystemTime;
begin;
Inc(mSecsToAdd, Time.wMilliseconds);
Time.wMilliseconds := mSecsToAdd mod 1000;
mSecsToAdd := mSecsToAdd div 1000 + Time.wSecond;
Time.wSecond := mSecsToAdd mod 60;
mSecsToAdd := mSecsToAdd div 60 + Time.wMinute;
Time.wMinute :=...
Forum: Win32/Win64 API (native code)
by himitsu,
27. Jan 2008
i := (X.Sekunde + Sekunden) div 60;
X.Sekunde := (X.Sekunde + Sekunden) mod 60;
i2 := i;
i := (X.Minute + i2) div 60;
X.Minute := (X.Minute + i2) mod 60;
i2 := i;
i := (X.Stunde + i2) div 24;
X.Stunde := (X.Stunde + i2) mod 24;
...
oder
Forum: Win32/Win64 API (native code)
by himitsu,
27. Jan 2008
schon bemerkt das es ein record ist, welcher auf netten WORDs besteht?
damit kann man doch wunderbar rechnen und dank einiger "neuer" Funktionen (z.B. Operatoren) für Records, kann man sich auch notfalls den TSystemTime-Record erweitern.
Forum: Win32/Win64 API (native code)
by himitsu,
26. Jan 2008
wozu der Umweg über TFileTime?
TSysteTime ist doch ein recht einfaches Format und so schwer sollte das Rechnen damit doch nicht sein?