hab jetzt mal alles durchgesucht und den "fehler" gefunden
ich hab einfach das was now() macht (und die unteraufrufe) selbst geschrieben mit debugausgaben
hat nix mit zeitwerten zu tun
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| function Now3: String; var SystemTime: TSystemTime; td:TDateTime; tmpFloat,tmp:Extended; const dday:Extended=60*60*24; begin GetLocalTime(SystemTime); Result := Inttostr(systemTime.wHour)+':'+inttostr(systemtime.wMinute)+':'+inttostr(systemtime.wSecond); with SystemTime do begin Ausgabe(inttostr(wHour)+':'+inttostr(wMinute)+':'+inttostr(wSecond),cOK); td:=EncodeDate(wYear, wMonth, wDay); td:=td+wHour /24; td:=td+wMinute/(24*60); tmpFloat:=wSecond/(24*60*60); tmp:=td; Ausgabe(FloatToStr(tmp),cOK); tmp:=tmp*dday; Ausgabe(FloatToStr(tmp)+' aaa '+inttostr(wSecond),cOK); td:=tmp+10; tmp:=tmp+wSecond; Ausgabe(FloatToStr(tmp),cOK); tmp:=tmp/dday; td:=td/dday; Ausgabe(FloatToStr(td)+' '+Floattostr(tmp),cOK); end; Result:=DateTimeToStr(td); end; |
Dadurch fallen die Sekunden, zum Teil auch die minuten untern tisch....
asm:
Quelltext
1: 2:
| 172DCEF3 DB6D D0 FLD TBYTE PTR [EBP-30] 172DCEF6 D805 04D02D17 FADD DWORD PTR [172DD004] //der inhalt ist 10.0000 aber es passiert gar nix (ollydbg) |
entspricht
Delphi-Quelltext
ich versteh das nicht...
EDIT: Ich hab den Fehler jetzt umgangen indem ich ne eigne zeit-unit geschrieben hab die auf nem cardinal typ basiert (sekunden seit tag x)
einzige sache: ich hab noch teile wie das hier:
Delphi-Quelltext
1: 2:
| m:=s div 60; s:=s mod 60; |
wie war das da mit geschwindigkeit von div und modulo?
bin ich statt dem div vl mit trunc() schneller? oder ist div schneller?