你一定是在win2000下执行了直接地址读指令,如以下代码可读主板序列号:var mBinf :PChar; i:integer; FMBinfo :string; begin mBinf:=PChar(Ptr($FEC71)); //令mBinf指向$FEC71地址 for i:=11 to LENGTH(string(mbinf)) Do //此处在win2000下错。 FMBinfo:=FMBinfo+mbinf[i]; //读取序列号 .... end;以上代码在win9x下可执行,但在win2000下就会报以上所说错误。可能是win2000不支持直接指定地址吧。
比如:程序启动时,关闭时,打开/关闭某窗体时,
因为,'指令ox4089a62e 引用ox0000002r 内存 ,该内存不能为read!'在以下
情况都肯能出现。
1.某个对象或窗体创建不正常,比如用Form=Form.Create(Self);去创建窗体。
2、某个对象或窗体释放不正常,
3、对象未创建就引用
4、引用了以释放的对象。
5、当前操作系统不正常,需要重启甚至重装。
一般来说,由2、3、4引起该问题的情况较多,你最好将问提描叙得更清楚一些。
i:integer;
FMBinfo :string;
begin
mBinf:=PChar(Ptr($FEC71)); //令mBinf指向$FEC71地址
for i:=11 to LENGTH(string(mbinf)) Do //此处在win2000下错。
FMBinfo:=FMBinfo+mbinf[i]; //读取序列号
....
end;以上代码在win9x下可执行,但在win2000下就会报以上所说错误。可能是win2000不支持直接指定地址吧。