如何覆盖 TIniFile.Create?

发布于 2025-01-08 13:13:59 字数 271 浏览 0 评论 0原文

如何重写 TIniFile.Create 构造函数?

此代码不起作用,因为 Create 是静态的:

  TMyIniFile = class(TIniFile)
   protected
   public
     constructor Create  (CONST AppName: string); override;  <------ Error 'Cannot override a non-virtual method' 
   end;

How to override TIniFile.Create constructor ?

This code is not working because Create is static:

  TMyIniFile = class(TIniFile)
   protected
   public
     constructor Create  (CONST AppName: string); override;  <------ Error 'Cannot override a non-virtual method' 
   end;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼前雾蒙蒙 2025-01-15 13:13:59

您无法重写 TIniFile 的构造函数,因为它不是虚拟的。 ini 文件类不使用虚拟构造函数。

您只需从代码中删除覆盖即可。

TMyIniFile = class(TIniFile)
public
  constructor Create(const AppName: string);
end;

像这样实现它:

constructor TMyIniFile.Create(const AppName: string);
begin
  inherited Create(FileName);//I can't tell what you need as FileName
  FAppName := AppName;
end;

当您需要创建一个时,您可以这样做:

MyIniFile := TMyIniFile.Create(MyAppName);

You cannot override the constructor of TIniFile since it is not virtual. The ini file classes do not use virtual constructors.

You simply need to remove the override from your code.

TMyIniFile = class(TIniFile)
public
  constructor Create(const AppName: string);
end;

Implement it like this:

constructor TMyIniFile.Create(const AppName: string);
begin
  inherited Create(FileName);//I can't tell what you need as FileName
  FAppName := AppName;
end;

When you need to create one you do so like this:

MyIniFile := TMyIniFile.Create(MyAppName);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文