我无法删除刚刚创建的文本文件

时间:2018-07-09 10:57:39

标签: pascal file-locking

当我创建一个文本文件时,接下来将其复制到另一个目录,然后尝试删除原始文件,它将无法工作,因为程序将文件锁定。 在删除文件之前,我将文件属性设置为“正常”,如下所示:

SetFileAttributes((pchar('C:\test')),FILE_ATTRIBUTE_NORMAL);

我找不到任何简单的解决方案来解决此问题。 我这样创建文件:

    bestand:= tstringlist.Create;
    try
      r:= FindFirst('test.*', faAnyFile, Res);
      try
       EOFound:= False;
        if (r = 0) then
          while not EOFound do
            begin
              bestand.Add(res.Name);
              EOFound:= FindNext(Res) <> 0;
            end;
      finally
        FindClose(Res);
      end;
    finally
      bestand.SaveToFile('C:\test');
      bestand.Free;
    end;

仅读取这样的文件时,会发生相同的问题:

AssignFile(Txt,TmpBest);
Reset(Txt);
  while not Eof(Txt) do
     begin
        Readln(Txt, s);
        L.Items.add.caption:=s;
     end;
  CloseFile(Txt);

稍后,我将文件属性设置为“普通”,并尝试删除文件:

  if CopyFile(pchar(file-org), pchar(file-dest), false) then 
    begin 
      SetFileAttributes(pchar(file-org),FILE_ATTRIBUTE_NORMAL); 
      if not DeleteFile(file-org) then 
        showmessage('delete ' + file-org + ' failed!'); 

其中文件组织是以上描述中的文件Txt / TmpBest。 我必须说:我不是Delphi程序员。我用COBOL编写,但是从以前的同事那里“继承”了这个Delphi程序,需要对其进行一些更改。

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案。我已经提到我不是Delphi程序员,所以我没有注意到更改之前的另一条遗留语句:

FSource:= TFileStream.Create(SourceFile,fmOpenRead或fmShareDenyNone);

删除该语句解决了我的问题;显然,该语句锁定了我的文件,直到程序关闭。感谢您一直以来的帮助。