Voilà j'essais de créer un entier de type quad avec deux entier de type long mais ça ne fonctionne pas et je ne comprend pas pourquoi.
Voici le code en question :
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Fusion et Extraction des parties d'un Quad
Macro MakeQuad(HiLong, LoLong)
(HiLong << 32 | LoLong)
EndMacro
Macro ExtractQuadHiLong(Quad)
((Quad >> 32) & $FFFFFFFF)
EndMacro
Macro ExtractQuadLoLong(Quad)
(Quad & $FFFFFFFF)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Fusion et Extraction des parties d'un Long
Macro MakeLong(HiWord, LoWord)
(HiWord << 16 | LoWord)
EndMacro
Macro ExtractLongHiWord(Long)
((Long >> 16) & $FFFF)
EndMacro
Macro ExtractLongLoWord(Long)
(Long & $FFFF)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! ATTENTION - CODE D'ESSAI !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
HiWord.w = 12345
LoWord.w = 23456
HiLong.l = HiWord
LoLong.l = LoWord
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; Original value"
Debug ""
Debug HiWord
Debug LoWord
Debug ""
Debug HiLong
Debug LoLong
Debug ""
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; MakeLong() Test"
Debug ""
NewLong.l = MakeLong(HiWord, LoWord)
Debug NewLong
Debug ExtractLongHiWord(NewLong)
Debug ExtractLongLoWord(NewLong)
Debug ""
Debug "; <<<<<<<<<<<<<<<<<<<<<<<<<<<<"
Debug "; MakeQuad() Test"
Debug ""
NewQuad.q = MakeQuad(HiLong, LoLong)
Debug NewQuad
Debug ExtractQuadHiLong(NewQuad)
Debug ExtractQuadLoLong(NewQuad)
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Comme on peut le voir le MakeLong() fonctionne mais pas le MakeQuad(). Si quelqu'un peut me dire pourquoi parce que là je ne vois pas comment corriger la situation.; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Original value
12345
23456
12345
23456
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; MakeLong() Test
809065376
12345
23456
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; MakeQuad() Test
23456
0
23456
Merci à l'avance.
[Edit] J'ai oublié de mentionner que je suis sous Linux Ubuntu 10.04 x64 avec PB x64.[/Edit]
A+
Guimauve