永发信息网

delphi 中的 if PWord(@(Buffer[i]))^=a then ...; 这个判断怎么取的值?

答案:2  悬赏:40  手机版
解决时间 2021-03-19 10:26
其中 a:Cardinal; Buffer:array[1..1] of Byte;或Buffer:array[1..$FF] of Byte;
最佳答案
procedure TForm1.Button6Click(Sender: TObject);
var
a:Cardinal; //Cardinal是无符号32位整数 相当于word
Buffer:array[1..2] of Byte; //声明数组 8位数组
c:Word; //定义一个c为word,方便数据测试用 16位 d:byte; //为了比对结果
begin
a := 10; //对本次测试无意义
Buffer[1] := $0F; //10进制15
Buffer[2] := $01; if PWord(@(Buffer[1]))^=a then
ShowMessage('');
c := Pword(@(Buffer[1]))^;
//下面我说一下这个过程 ,@buffer[56]随便取第1个下标的地址,转成word指针,再取这个指针对应的值。
//byte 是8位。PWord是16位实际上已经越界了。这里的 PWord(@(Buffer[1]))^,取到后一个下标即 PWord(@(Buffer[2]))^ 组合成为一个数值。这个值就是$010F
//为什么是$010F,pascal数组分配方式为高字节在前,低字节在后。
ShowMessage(IntToStr(c));
d := Pbyte(@(Buffer[1]))^; //测试。以Pbyte指针就不会发生越界。
ShowMessage(IntToStr(d)); //就是Buffer[1]的值
end;
全部回答
搜一下:delphi 中的 if PWord(@(Buffer[i]))^=a then ...; 这个判断怎么取的值?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在暗黑2里,怎样才能得到超强的水晶剑?
小米5更新到最新版本之后手机有点运行不顺畅
(8x+60-3x)÷3=28解方程
刘小洋和娜娜在一起了吗?
近视了不戴眼镜看长篇小说,是应该把字体调大
合契同情是什么意思?
吴正口这个地址在什么地方,我要处理点事
天下3 荒火按哪个键是静坐
嵌用部首查字,应查什么,读音什么,字义什么。
对于影视动画专业,3d max和ae哪个更有用?
怎样检查数码相机是不是翻新的
北京科技大学冶金和材料毕业生就业状况如何?
融安到三江丹州古宜镇的路程
手机qq怎么投诉别人
陈奕迅 《好久不见》 粤语版歌名叫什么?
推荐资讯
passport和tourist visa是一回事吗
魔兽埃索达如何去外域
三姨夫跟二舅什么关系
steam饥荒远古手杖皮肤解密活动还有吗?第一
花海用来词语形容、
为什么我下载东西不是下在C盘,怎么C盘的内存
我QQ大号超过7天没登,为什么在小号上看到7天
伦巴舞基本步教学 莹莹塑形拉丁 教师怎样
北魏孝文帝算不算痴情皇帝 冯皇后与他人通奸
定陶县杜堂镇杨店村民委员会怎么去啊,有知道
一首歌开头是丁零零零零啦啦
梦见蚊帐
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?