二、數的“分開”與“合成”
取32位longint型數的高16位數為
hiWord(longint-var)
低16位數為
loWord(longint-var)
取16位數的 高8位數
hibyte(integer_var)
低8位數為
lobyte(integer_var)
取32位地址的段選擇符和偏移量 段選擇符(高16位地址)為
selectorof(p)
偏移量(低16位地址)為
offsetof(p)
段選擇符和偏移量合成為指針
Ptr(SEG, OFS: Word)相當於C語言的宏MK-FP(SEG,OFS)
例如在Windows中,Task DataBase結構0FAh偏移處包含'TD'標識,我們可以容易地編寫如下代碼觀察到這個位於Windows內部的未公開的秘密:
{函數ptr(seg,ofs)的用法,相當於C語言的MK-FP(seg,ofs)}
var p:pbyte;ch:char;
p:=ptr(getcurrentTask,$FA);
ch:=char(p^); {結果為ch='T'}
p:=ptr(getcurrentTask,$FA+1);
ch:=char(p^); {結果為ch='D'}