读取ini文件onCreate事件会导致8秒延迟

时间:2013-05-08 14:45:10

标签: delphi profiling delphi-2009 ini

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

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的创建工厂

  Inherited Create(AOwner);

提问时间: 查询ini文件时为什么Delphi会挂起? ini文件是一些大键,位于64k windows API限制。甚至OnCreate与此有什么关系呢?

  

INI限制和下行TIniFile类使用Windows API   这对INI文件施加了64KB的限制。如果你需要存储更多   超过64KB的数据,你应该使用TMemIniFile。

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

我说我责怪这段代码的原因,是一个简单的“试试看”。我删除了ini文件调用,从on创建,代码运行顺利,即时窗口打开。在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创建半秒延迟(快速)。

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

0 个答案:

没有答案