用new分配一个动态对象的,一操作就崩溃

benbensan 2005-10-22 09:17:59
我用的delphi 5.0,类定义如下
type
TMyTest = class
public
m_Value : integer;
public
constructor Init(value : integer);
end;
PMyTest = ^TMyTest;
var
ptest : PMyTest;
implementation
{$R *.DFM}
constructor TMyTest.Init(value : integer);
begin
m_Value := value;
end;
然后在使用的时候
New(ptest);
ptest^.Init(123);
问题如下
1、第二行一旦执行就崩溃,刚开始使用Delphi,与C++语法不同,所以请帮忙解决一下,不胜感激!
2、好多书上说可以ptest := New(PMyTest, Init(123));可是这句话编译不过,是不是delphi版本太低(我得5.0)还是我写错了
...全文
220 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
鲫鱼跃龙门 2005-10-22
  • 打赏
  • 举报
回复
呵呵,lz 混淆了 c++ 与 delphi 的用法了。
在 delphi 中,类的构造函数是需要显式调用的,
不象 c++ 中,new 一个对象指针就自动调用了构造函数了。
这是绝大多数用惯 c++ 的人初用 delphi 时一定要会犯的一个错误。
sxy_9761 2005-10-22
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
PTest : PMyTest;
begin
new(pTest);
pTest^ := TMyTest.Init(10);
ShowMessage(IntToStr(pTest^.m_Value));
pTest^.Free;
Dispose(pTest);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
MyTest : TMyTest;
begin
MyTest := TMyTest.Init(11);
ShowMessage(IntToStr(MyTest.m_Value));
MyTest.Free;
end;
//
//楼主可能是把C++与Delphi的语法混淆了。
//Delphi中MyTest是一个指针,即使不用new
//new在Delphi里是分配一块内存,但不会将对像进行构造
//比较乱,希望能明白
benbensan 2005-10-22
  • 打赏
  • 举报
回复
谢谢两位,问题解决!不胜感激

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧