现在有一个记录type MyRecord = record
field1:DOWRD;
field2:DOWRD;
field3:DOWRD;
field4:DOWRD;//这个record里的域都是DWORD类型
end;我现在知道我要访问的域的位置是第三个,还知道record的首地址,但不知道第三个域的名字怎样才能通过:记录首地址,域的位置来读写该域?
多谢
field1:DOWRD;
field2:DOWRD;
field3:DOWRD;
field4:DOWRD;//这个record里的域都是DWORD类型
end;我现在知道我要访问的域的位置是第三个,还知道record的首地址,但不知道第三个域的名字怎样才能通过:记录首地址,域的位置来读写该域?
多谢
解决方案 »
- 问下两个函数的用法???
- 要用delphi开发一个来电显示功能的程序。要怎么做?
- 动态改变主窗体,mdi和form
- delphi 中的XMLDocument问题!!
- 初学delphi者编写的机动车申请驾驶证管理软件!大家指点一下
- 比较菜的问题!判断一个字符在一个字符串中的函数是什么?
- 求救!怎样让我的窗体和控件自动的尺寸位置自动适应用户屏幕分辨率大小?
- 对HTML Help 帮助制作工具有兴趣的兄弟请进
- 这里有刚毕业的大学生或者在校生吗?请进来谈谈找工作的事好吗?
- 新手问题:在数据模块中使用TStoredProc调用存储过程,运行时报错:error creating cursor handle -急
- 哪里有带水平滚动条的Edit控件?且功能类似于RichEdit,里面其中任一个字符可以任意改变字体或颜色.不能换行?
- 在vc中的initdialog中的this-》getsafeHwnd()对应deplhi的那一个函数啊?
type MyRecord = record
field1:DWORD;
field2:DWORD;
field3:DWORD;
field4:DWORD;//这个record里的域都是DWORD类型
end;procedure TForm1.Button1Click(Sender: TObject);
var
m:MyRecord;
p:pword;
begin
m.field1:=1;
m.field2:=2;
m.field3:=3;
m.field4:=4;
p:=pword(pchar(@m)+2*sizeof(dword)); //@m为m的首址,2为第3个域(0..3)
ShowMessage(inttostr(p^)); //结果为第3个域的值,即为3
end;
var
p:PLongWord;
s:MyRecord;begins.field1:=11;
s.field2:=121212;
p:= Pointer( Integer(@s)+SizeOf(DWORD)) ;
p^:=23;
mmo1.Lines.Clear;
mmo1.Lines.Add('@s ' +intToStr(Integer(@s) ));
mmo1.Lines.Add('p '+intToStr(Integer(p)));
mmo1.Lines.Add('p^ '+ IntToStr(p^));
end;