Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: TFileTime addieren

  Alt 6. Aug 2007, 10:32
Hallo Michael,

du hast Sirius' Ergänzung offenbar überlesen:

Zitat von sirius:
Edit: Wichtig ist, dass in ASM bei der Addtion der Hi DWords ein "adc" statt eines "add" genommen wird, um den Übertrag aus der zuvor erfolgten Addition (hier reicht add) der Lo DWords mitzunehmen.
Es reicht nicht, Lo- und Hi-Teil getrennt zu addieren, weil dabei ein eventueller Übertrag unterschlagen wird. Du mußt eigentlich nur so vorgehen wie bei der schriftliche Addition von Dezimalzahlen - oder so, wie sirius es zuvor gezeigt hat.

Das hier

Zitat:
//CPUTime := (ProcList.Items[i].KernelTime.dwLowDateTime shl 32) + ProcList.Items[i].UserTime.dwHighDateTime;
ist zwar auskommentiert, beinhaltet aber einige Fehler, die möglicherweise auch an anderen Stellen in deinem Quelltext vorkommen. Zunächst werden zwei Teile aus unterschiedlichen Strukturen (KernelTime und UserTime) verheiratet, wahrscheinlich ist das nur ein Schreibfehler. Dann wird der niederwertige Anteil verschoben - richtig wäre der höherwertige Anteil. Der letzte Fehler: bei einer Verschiebung um 32 Bits passiert nichts, wenn das Argument nicht zuvor nach Int64 gecastet wird.

Gruß Hawkeye
  Mit Zitat antworten Zitat