本人用FileCreate(FileName)创建了一个文本文件,然后用
AssignFile(F,FileName);
Append(F);
write(F,'aaa');运行出错
说EInOutError 'I/O Error 32'意思是sharing violation
看来是文件写权限不够,但文件是刚建立的啊
遇到这样的问题如何解决,望指教,谢谢

解决方案 »

  1.   

    var
    H:THandle;
    begin
    H:=Filecreate(FileName);
    closeHandle(H);
    ..............
    end;
      

  2.   

    FileCreate()函数和AssignFile()、Append()函数是属于两个系列的文件操作函数,AssignFile()、Append()函数是从早期的Pascal中继承来的。如果你想使用AssignFile()、Append()函数,则应该在Append或者Reset之前先将之前打开的文件关闭掉。从你所说的情况来看,应该用FileClose函数来关闭FileCreate创建的文件。
      

  3.   

    下面是我正在使用的一个写出错日志的函数;很久没改过了;不过还能用;^_^;
    你看看。
    procedure JaxWriteExceptionLog(AProcedure,AMemo: string);
    const
      FIELD_WIDTH = 20;
    var
      FileName: string;
      OutFile:TextFile;
    begin
      FileName := ExtractFileDir(ParamStr(0)) + '\'+FormatDatetime('YYYYMMDD',now)+ 'Exception.Log';
      AssignFile(OutFile, Filename);
      try
        if FileExists(Filename) then
        begin
          Append(OutFile);
          Writeln(OutFile);
        end
        else
          Rewrite(OutFile);
        //开始写异常明细
        Writeln(OutFile, '===== ', ExtractFileName(ParamStr(0)), ',', DateTimeToStr(Now), ' =====');
        Writeln(OutFile,AProcedure:FIELD_WIDTH,':',AMemo);
      finally
        CloseFile(OutFile);
      end;
    end;