首页 > 解决方案 > 从没有运行时包的 dfm 文件构建加载组件时,EClassNotFound 错误问题

问题描述

我用 Delphi XE5 制作了一些自定义组件:

    TMyPanel = class(TPanel)
      ...
    end;

    TMyComponent = class(TComponent)
      ...
    end;

    procedure Register;

implementation

  procedure Register;
  begin
    RegisterComponents('MyComp', [TMyPanel,TMyComponent]);
  end;
  
  ...

initialization
  RegisterClasses([TMyPanel,TMyComponent]);
  ...

并构建到“mycomp.bpl”文件并安装组件。

在我的应用程序中,加载 bpl 文件,如:

FPkgHande := LoadPackage('mycomp.bpl');

然后使用 Twriter.WriteComponent(...) 制作包含上述组件的“mydfm.dfm”文件。

并尝试加载 dfm 文件,如下所示:

        ...
  var
    Reader: TReader;
  begin
       ...
    Reader.ReadComponent(ParentControl);
       ...
  end;

当我的应用程序使用运行时包构建时,如下所示:

Project->Options->Packages->Runtime Packages->Link with runtime packages = True

它可以加载dfm文件以成功形成。

但是当设置为 False 我的应用程序选项如下:

Project->Options->Packages->Runtime Packages->Link with runtime packages = False

然后我的应用程序出现如下错误:

"...TMyComponent class not found..."

这个错误的原因是什么?

标签: delphi

解决方案


推荐阅读