Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TFileTime addieren

  Alt 6. Aug 2007, 10:52
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.
  Mit Zitat antworten Zitat