我用C++Builder一年多了。熟悉win32汇编,可就是对Delhpi的代码总是理解不上去啊。
问题1:
var
    TmpRegistry : TRegIniFile;
    TapiProcesses : TStringList;
begin
。。
TmpRegistry := TRegIniFile.Create('SOFTWARE\TurboPower\APRO\TAPI');   I 
...
end
在上面的代码段中根据汇编窗口的显示,第一行就调用构造函数了,可是最后赋值那行又调用了一次,这不是调用了两次构造函数吗?是不是分配了两次的内存?????问题2:上面的代码段中,如何在申明的时候就赋初值啊?
就好比在CB中TRegIniFile * p=new TRegIniFile("aaaaaaaa");
如何在Delphi中实现??????谢谢诸位解答。

解决方案 »

  1.   

    TmpRegistry :=TRegIniFile:TRegIniFile.Create('SOFTWARE\TurboPower\APRO\TAPI');可能可以,我以前见过类似的但不知 TRegIniFile 行不行。
      

  2.   

    1,其实
    var
        TmpRegistry : TRegIniFile;
    相当于
    TRegIniFile* TmpRegistry;
    而不是
    TRegIniFile TmpRegistry;所以不会构造两次。
    2,Delphi不能申明的时候就构造对象。
      

  3.   

    Delphi的对象其实都是指针,定义的时候只是分配了一个指针变量,实际的对象必须自己用Create函数构造。
    Delphi 的申明变量和构造变量必须分开
    申明在 var 段,
    初始化和使用在函数体的
    beginend
    之间