检查inifile是否存在或在我的代码序列中<nil> </nil>

时间:2014-03-18 12:49:42

标签: delphi

以下代码

  var aIniFile: TIniFile;


  procedure ASpecialEvent (aIniFile: TIniFile );
  begin
  ....
  if (aIniFile <> nil) then
  begin
    if fileexists(aIniFile.filename) then   //  Error is here ....
    begin
       ...... 
    end;
  end; 

  end;


  //   mainformcode  
  //   i Need to call this procedure even the Tini file is not yet created 


  ASpecialEvent(ainifile);

因访问冲突而失败。 infile不是Nil但我无法访问filename属性。如果文件有效,如何检查更有效?

1 个答案:

答案 0 :(得分:1)

对此的解释如下:

  1. aIniFile尚未初始化,因此定义不明确。
  2. aIniFile已初始化,但指的是已被销毁的对象。
  3. aIniFile是记录或类的成员,隐式Self指针无效。这个选项似乎不太可能。
  4. 不可能更具体地进行诊断,但上述之一是导致错误的原因。

    从评论来看,看起来你没有初始化局部变量aIniFile。在这种情况下,第1项适用。我怀疑你期望局部变量自动初始化。事实并非如此:Are delphi variables initialized with a value by default?

    如果您希望nil表示该对象尚未实例化,则必须明确初始化aIniFilenil