当我创建一个文本文件时,接下来将其复制到另一个目录,然后尝试删除原始文件,它将无法工作,因为程序将文件锁定。 在删除文件之前,我将文件属性设置为“正常”,如下所示:
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程序,需要对其进行一些更改。
答案 0 :(得分:0)
我找到了自己问题的答案。我已经提到我不是Delphi程序员,所以我没有注意到更改之前的另一条遗留语句:
FSource:= TFileStream.Create(SourceFile,fmOpenRead或fmShareDenyNone);
删除该语句解决了我的问题;显然,该语句锁定了我的文件,直到程序关闭。感谢您一直以来的帮助。