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

Pascal 我无法删除刚创建的文本文件,pascal,file-locking,Pascal,File Locking,当我创建一个文本文件时,下一步将它复制到另一个目录,然后尝试删除原始文件,它不会工作,因为程序会将文件锁定。 在删除文件之前,我将文件属性设置为“正常”,如下所示: SetFileAttributes((pchar('C:\test')),FILE_ATTRIBUTE_NORMAL); bestand:= tstringlist.Create; try r:= FindFirst('test.*', faAnyFile, Res); try

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

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);
我找不到任何简单的解决办法。 我创建的文件如下所示:

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!'); 
其中,文件org是上述描述中的文件Txt/TmpBest。
我必须说:我不是Delphi程序员;我用COBOL编写,但“继承”了一位前同事的Delphi程序,需要对其进行一些修改。

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

FSource:=TFileStream.Create(SourceFile、fmOpenRead或fmsharedynone)


删除该声明解决了我的问题;显然,该语句在程序关闭前锁定了我的文件。感谢您的帮助。

您究竟是如何复制和删除该文件的?在您尝试之前,您的程序是否已存在/关闭?我就是这样做的:如果CopyFile(pchar(文件组织)、pchar(文件目的地)、false),则开始设置文件属性(pchar(文件组织)、文件属性\u NORMAL);如果不删除文件(文件组织),则显示消息('delete'+文件组织+'失败!');其中,文件org是上述描述中的文件Txt/TmpBest。我不是Delphi程序员;我是用COBOL写的,但是从以前的同事那里“继承”了这个Delphi程序,需要对它进行一些修改。请编辑您的问题并在那里添加正确格式的代码。注释不是包含代码的地方。否则,其他读者可能找不到它,阅读起来就更难了。在我所知道的任何当前Windows文件系统上,普通用户都没有对“C:\”的写入权限-你确定你的程序不会更早地失败吗?关闭后,文件系统锁可能会持续数十毫秒。这是Windows的正常行为,与Pascal或Cobol无关。插入一个小延迟,它可能就可以工作了。