const
  IniFileName = '.\ConfigFile\ThirdConifg.ini';
  JingDaDllName = '.\DllFile\bfnet.dll';
  LogFileDir = '.\WaterControlLog';
  LogFileName = 'WCLog';  //日志文件名  WCLog+yyyymmdd.log格式 procedure TJingDaSellWater.WriteLog(const cLog: string);
var
  FLogFileName: string;
  LogFile: TextFile;
begin
  if not DirectoryExists(LogFileDir) then  //检查日志文件所在的路径是否存在
    CreateDir(LogFileDir);
  else begin
    FLogFileName:= LogFileDir +'\' + LogFileName + FormatDateTime('yyyymmdd',Date) + '.log';
    if not FileExists(FLogFileName) then  //日志文件不存在则创建
    begin
      FileCreate(FLogFileName);
    end
    else begin
      AssignFile(LogFile, FLogFileName);
      Append(LogFile);
      Writeln(LogFile, cLog);
      CloseFile(LogFile);
    end;
  end;
end;上面的代码 当第一次创建文件的时候出现运行时候的错误 I/O Error 32 ,请问这是什么原因呀?

解决方案 »

  1.   


    var  hd:thandle;
    ...
     if not FileExists(FLogFileName) then  //日志文件不存在则创建
     begin
         hd:= FileCreate(FLogFileName);
         FileClose(hd);  //这样才行
     end;   
    //另外,你建完后可直接写入
          AssignFile(LogFile, FLogFileName);
          Append(LogFile);
          Writeln(LogFile, cLog);
          CloseFile(LogFile);
      

  2.   

    function TfrmMain.WriteLog(ALogCont: String): String;
    var
      sDirectory, sFileName: String;
      nFile: TextFile;
    begin
      //目录检查
      sDirectory := ChangeFileExt(Application.ExeName, '');
      if not DirectoryExists(sDirectory) then
        CreateDir(sDirectory);
        
      //记录文本记录
      sFileName := ChangeFileExt(Application.ExeName, '\Log' + FormatDateTime('YYYYMMDD', Date) + '.txt');
      AssignFile(nFile, sFileName);
      if FileExists(sFileName) then
        Append(nFile)
      else
        Rewrite(nFile);
      Writeln(nFile, ALogCont);
      CloseFile(nFile);  //界面显示
      mmoLog.Lines.Add(ALogCont);
    end;
      

  3.   

    用那么多相对路径干嘛???因为相对路径可能会改变,所以最好不要这样大量的使用相对路径你可以根据你程序所在路径来判断其他的路径呀例如:AppPath:=ExtractfilePath(Application.exeName);//应用程序的当前路径  IniFileName = AppPath+'ConfigFile\ThirdConifg.ini';
      JingDaDllName = AppPath+'DllFile\bfnet.dll';
      LogFileDir = AppPath+'WaterControlLog';
      LogFileName = AppPath+'WCLog';  //日志文件名  WCLog+yyyymmdd.log格式