Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   wie aus eigener systemtime richtiges datum machen?? (https://www.delphipraxis.net/107378-wie-aus-eigener-systemtime-richtiges-datum-machen.html)

lbccaleb 27. Jan 2008 03:08

Re: wie aus eigener systemtime richtiges datum machen??
 
Zitat:

Zitat von himitsu
Zitat:

AddTime(AddTime: TSystemTime; TimeToAdd: int64): TSystemTime;
wozu der Umweg über TFileTime?
TSysteTime ist doch ein recht einfaches Format und so schwer sollte das Rechnen damit doch nicht sein?

ja leider doch, denn der nachteil bei dem recht einfachen format ist, das man nichts addieren oder subtrieren kann, das kann man leider nur bei filetime, denn systemtime kommt man dann schnell mal an 40.01.2008 und das geht wohl kaum ;-)
deswegen der umweg ;-)

himitsu 27. Jan 2008 03:35

Re: wie aus eigener systemtime richtiges datum machen??
 
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.

lbccaleb 27. Jan 2008 09:02

Re: wie aus eigener systemtime richtiges datum machen??
 
ok dan geb mal ebend ein bsp, denn ich hab kp wie ich das anstellen soll, bin nämlich froh das es mit der anderen funktion jetzt funktioniert, und das hat mich schon halb zum verzweifeln gebracht, ich bin froh das es jetzt alles so läuft wie es soll...

himitsu 27. Jan 2008 10:25

Re: wie aus eigener systemtime richtiges datum machen??
 
Delphi-Quellcode:
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
Delphi-Quellcode:
i := X.Sekunde + Sekunden;
X.Sekunde := i mod 60;
i := i div 60 + X.Minute;
X.Minute := i mod 60;
i := i div 60 + X.Stunde;
X.Stunde := i mod 24;
i := i div 24 + X.Tag;
...
oder ...

Mathematik halt .. nja, zumindestens hast du dir so ganz "elegant" das Problem mit den ungleichlangen Monaten und den Schaltjahren vom Hals geschafft :stupid:

lbccaleb 27. Jan 2008 11:09

Re: wie aus eigener systemtime richtiges datum machen??
 
ja das ja schön und gut, aber wie soll ich das denn jetzt systemtime zuweisen?? das problem ist ja das ich Tsystemtime keine eigenen variablen addieren kann, ich kann zwar schon addieren, aber er akzeptiert das nicht... die berechnung ist ja nicht das problem sondern nur die zuweisung, und das geht halt nur wenn ich "leider" den umweg über filetime nehme..

himitsu 27. Jan 2008 11:19

Re: wie aus eigener systemtime richtiges datum machen??
 
wieso soll man da nix zuweisen können?

Delphi-Quellcode:
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      := mSecsToAdd mod 60;
  mSecsToAdd        := mSecsToAdd div 60 + Time.wHour;
  Time.wHour        := mSecsToAdd mod 24;
  mSecsToAdd        := mSecsToAdd div 24 + Time.wDay;
  ...
end;

Muetze1 27. Jan 2008 11:21

Re: wie aus eigener systemtime richtiges datum machen??
 
Vom Variablennamen her addierst du Millisekunden auf Sekunden?

lbccaleb 27. Jan 2008 11:39

Re: wie aus eigener systemtime richtiges datum machen??
 
schön und gut, deine funktion nur ich glaub du hast mein problem nicht verstanden:

du kannst tsystemtime nichts zuweisen, bzw nichts addieren (zumindest nicht so) denn dann kommt kein glütiges datum mehr herraus!

himitsu 27. Jan 2008 11:42

Re: wie aus eigener systemtime richtiges datum machen??
 
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.

lbccaleb 27. Jan 2008 11:48

Re: wie aus eigener systemtime richtiges datum machen??
 
na wie muss ich das denn zb aufrufen wenn ich einen tag addieren will?? weil eigentlich geht es mir mehr um tag, monat und jahr..


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz