我用的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)还是我写错了

解决方案 »

  1.   

    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里是分配一块内存,但不会将对像进行构造
    //比较乱,希望能明白
      

  2.   

    呵呵,lz 混淆了 c++ 与 delphi 的用法了。
    在 delphi 中,类的构造函数是需要显式调用的,
    不象 c++ 中,new 一个对象指针就自动调用了构造函数了。
    这是绝大多数用惯 c++ 的人初用 delphi 时一定要会犯的一个错误。