Wie wärs z.B. damit:
Delphi-Quellcode:
type TLargeTime=record
case boolean of
True: (DWlo:cardinal;DWHi:cardinal);
False: (QW:int64);
end;
//kein Ahnung ob lo oder hi zuerst kommt, aber da wir bei little endian sind....
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:TLargeTime;
begin
a.DWlo:=5;
a.DWHi:=0;
memo1.lines.add('A: '+inttostr(a.qw));
b.DWlo:=0;
b.DWHi:=6;
memo1.lines.add('B: '+inttostr(b.qw));
c.qw:=a.qw+b.qw;
memo1.lines.add('C: '+inttostr(c.qw));
end;
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.
Edit2: Was die
Unit Windows nicht so alles bietet
Delphi-Quellcode:
_LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: Longint);
1: (
QuadPart: LONGLONG);
end;
PS: Irgendwie beist sich bei der Bezeichnung doch was:
1. DateTime -normalerweise double
2. dw* -steht eher für DWORD
3. Was ist dann DW*DATETIME?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.