TMyClass = class
public
 procedure myprc();
end;.....
peocedure TMyClass.myprc();
begin
  ShowMessage('In MyPrc');
end;.....var
 AMyClass:TMyClass;
begin
 AMyClass.MyPrc();
end;delphi 中的class能不经过初始化(Create)就使用吗??
最近看到一段源代码,和上面的代码差不多,居然不出错!!!

解决方案 »

  1.   

    我的感觉是不能,你如果单步调试一下的话会发现,在没有Create的情况下AMyClass指向nil,不可能不出错的
      

  2.   

    to STYun(天云) :
    确实不会出错的,我上面写的代码在Delphi7下试过的,没有什么问题的!!!我问这个问题的意思是,这么做会不会出什么潜在的问题???或许如果用到TMyClass的成员变量就会有问题???
      

  3.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=2431137
      

  4.   

    to asj() :
    好象我的问题和哪个问题不太一样!
      

  5.   

    procedure myprc(); 不错?除非你加了这个过程前面加了关键字class???
      

  6.   

    TMyClass = class
    public
      class procedure myprc();   //改成这样的声明形式就可以不Create就使用
    end;
      

  7.   

    不Create绝对不行,除非系统自动初始了
    比如:Tform1=class (Tform)
      

  8.   

    这个问题的论述很多了。的确不会出错,这很正常,不管有没有Class,只要你的方法没有用到数据成员,就可以不用Create进行调用。因为方法是静态编译的,同时又没有用到数据成员,所以不会出错。
      

  9.   

    看来是jhwh(弹剑长歌),asj(),fj218(fj218) 说的没有错!
    没有想到ESRI这样一家大公司,编出的例子代码竟然会出现没有初始化就使用的,所以有这一问!!!!