2017-06-23 4 views
3

Je ne connais pas les mots à utiliser pour une recherche.Impossible de trouver un terme de recherche pour Split a Longint

J'ai un LongInt de quatre octets et je dois obtenir la valeur des deux premiers octets en tant qu'entier et la même chose pour les deux derniers octets qu'un autre entier.

Avoir un moment de mémoire de vieux pet ici. :)

Je suppose que c'est quelque chose à voir avec le moins significatif et le plus significatif, mais un bon terme de recherche me fait allusion.

+2

mot basse et haute est généralement ce qui est utilisé, autant que je sache. –

Répondre

5
uses Winapi.Windows; 

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

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

Arrrghhh, gifler le front. Merci Dave. – X10WannaBe

5

Il existe de nombreuses façons d'aborder ceci:

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;