0

我有一些复杂的软件,我将它的延迟减少到这段代码:

procedure Tform1.FormCreate(Sender: TObject);
begin
  inherited;
  with TIniFile.Create(Path + '\FileName.INI') do
    try
       CheckBox1.Checked :=ReadBool('Header','Key',true);
    finally
      Free;
    end;
end;

调试代码时,调试器显示挂在 TForm 的 Create factory

  Inherited Create(AOwner);

提问时间:为什么查询ini文件时Delphi会死机?ini 文件是几个键大,站在64k Windows API限制。even OnCreate 与此有什么关系?

INI 限制和缺点 TINiFile 类使用 Windows API,它对 INI 文件施加了 64KB 的限制。如果您需要存储超过 64KB 的数据,您应该使用 TMemIniFile。

更新:很多评论都试图联系起来。

我说我责怪这段代码的原因是一个简单的“试试看”。我从创建时删除了ini文件调用,代码运行流畅,即时窗口打开。使用 onCreate 上的 ini 文件调用编译时,软件挂起 8 秒。将调用从 onCreate 移至构造函数 Create,代码运行顺畅。

ini 文件是本地文件,它在本地目录中,软件是唯一调用这个文件的,而不是网络文件。在驱动器 c\folder\foler\filename.ini、Windows 上。

这样做CheckBox1.Checked := true,会延迟半秒(快)。正在做

  with TIniFile.Create(Path + '\FileName.INI') do
    try

    finally
      Free;
    end;

半秒延迟,(快)。买回代码仍然会产生 8 秒的延迟。将代码从 OnCreate 移动到 Constructor Create 半秒延迟(快)。

所以我不确定为什么会这样。

4

0 回答 0