Delphi {$M +} 与{$TYPEINFO ON} 和 {$M -} 与{$TYPEINFO OFF}

Delphi {$M +} 与{$TYPEINFO ON}  和  {$M -} 与{$TYPEINFO OFF}

在TPersistent的声明中多了M编译开关,当{$M +} 与{$TYPEINFO ON} 作用是一样的, 而{$M -} 与{$TYPEINFO OFF}
相同。当一个类在{$M +} 和{$M -}间声明时,程序编译器将为类生成与RTTI(Runtime Type Information)相关的代码来完成
类的published的属性,方法和事件的存储工作。并且该类子类的published属性,方法和事件也具有存取特性。如果一个类
或祖先类都没有在{$M +} 和{$M -}间声明时,则该类不能有published的实行,事件和方法。

例如 System.Classes 中的

{$M+}

  TPersistent = class(TObject)
  private
    procedure AssignError(Source: TPersistent);
  protected
    procedure AssignTo(Dest: TPersistent); virtual;
    procedure DefineProperties(Filer: TFiler); virtual;
    function GetOwner: TPersistent; dynamic;
  public
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); virtual;
    function GetNamePath: string; dynamic;
  end;

{$M-}

 

 

创建时间:2020.11.16  更新时间:

 

posted on 2020-11-16 10:53  滔Roy  阅读(163)  评论(0编辑  收藏  举报

导航