2017-06-23 1 views
3

Ich weiß nicht die Wörter für eine Suche.Kann einen Suchbegriff nicht finden Split a Longint

Ich habe eine Vier-Byte-LongInt und ich muss den Wert der ersten beiden Bytes als Integer und das gleiche für die letzten zwei Bytes als eine andere ganze Zahl erhalten.

Einen alten Furz haben Speichermoment hier. :)

Ich denke, es ist etwas mit der am wenigsten signifikante und wichtigste zu tun, aber ein guter Suchbegriff spielt auf mich an.

+2

Low und High-Wort typisch ist, was verwendet wird, AFAIK. –

Antwort

5
uses Winapi.Windows; 

var 
    L : longint; // DWORD 
    lsw : word; 
    msw : word; 

begin 
    lsw := LoWord(L); 
    msw := HiWord(L); 
end; 
+0

Arrrghhh, schlug die Stirn. Danke Dave. – X10WannaBe

5

Es gibt viele verschiedene Möglichkeiten, dies zu bewältigen:

uses 
    Windows; 

var 
    Value : Longint; 
    l : Word; 
    h : Word; 
begin 
    Value := ...; 
    l := LOWORD(Value); 
    h := HIWORD(Value); 
end; 

uses 
    SysUtils; 

var 
    Value : Longint; 
    l : Word; 
    h : Word; 
begin 
    Value := ...; 
    l := LongRec(Value).Lo; 
    h := LongRec(Value).Hi; 
end; 

var 
    Value : Longint; 
    l : Word; 
    h : Word; 
begin 
    Value := ...; 
    l := Word(Value); 
    h := Word(Value shr 16); 
end;