Type TmsgShow = Class
private
msg : String;
public
procedure SetMsg(str : String);
procedure disp;
end;procedure TmsgSHow.SetMsg(str : String);
begin
msg := str;
end;procedure TmsgSHow.disp;
begin
ShowMessage(msg);
end;procedure TForm1.Button2Click(Sender: TObject);
var
My: TmsgShow;
begin
My.Create;
my.SetMsg('LinQing');
my.disp;
My.Destroy;
end;发现错误在执行My.Destroy时发生,但搞不懂为什么。
private
msg : String;
public
procedure SetMsg(str : String);
procedure disp;
end;procedure TmsgSHow.SetMsg(str : String);
begin
msg := str;
end;procedure TmsgSHow.disp;
begin
ShowMessage(msg);
end;procedure TForm1.Button2Click(Sender: TObject);
var
My: TmsgShow;
begin
My.Create;
my.SetMsg('LinQing');
my.disp;
My.Destroy;
end;发现错误在执行My.Destroy时发生,但搞不懂为什么。
解决方案 »
- FastReport问题:我设计的报表在HP 3055上只能打出来中间一部分,两边被除数剪了,是怎么回事?
- 我在DLL文件中写了一个连接数据库函数,但一调用这个函数,就报错“尚未调用coinitialize”
- 哪位高手能指导一下啊!!(TTreeView的使用)
- 怎样能把oracle中不同表的数据通过SQL语句导入SQL Server的一个表中
- DBGRID中显示四个字段只对应数据库中的一个字段 如何实现?(着急ing)!
- delphi 与 SQL Server的怎么连接啊,急!第一个解决问题的得全分
- 可有数据感知控件(像datagrid)能直接对该控件中的数值型字段进行汇总操作?
- 你个关于统计的问题,有点难,不然不会这么多分(up有分)
- 做过考勤的朋友请进!
- 谁可以告诉我:CAST属于什么类?怎么定义?老鱼,你怎么说点就走?老千也是!!!
- 我想把有段落格式或者是有字体、粗细等属性的文本存入数据库,请问怎么做?
- 请问如何在ActiveXForm中关闭网页?谢谢
my := TmsgShow.Create; //用这个初始化
//而不是My.Create;但不明白原理,哪位可以说说?谢谢!
这样my := TmsgShow.Create之后,My才有一块真正有效的作用地址。
在这之前,my仅仅是个空指针,不指向任何有效地址,当然也不能干活,也不能撤销destroy啦。
的时候,就已经访问了一个不该被访问的地址,虽然可能可以运行,但该内存不该被这样读写的,因为不是你申请来的。
disp可以执行是因为,类中的方法的代码是单独定位,不与数据比如msg放在一起的。
最后destroy失败是因为系统检测出,你根本不应该释放这块内存变量(本不就是你申请来的)。