Delphi TStringList efcreate错误,文件被另一个进程使用

Delphi TStringList efcreate错误,文件被另一个进程使用,delphi,tstringlist,Delphi,Tstringlist,我到处都在找,但我好像没法找到它。当我运行这段代码时,我得到一个EFCreateError,告诉我该文件被另一个进程使用。我对使用TStringLists有点陌生,所以我需要你的帮助!提前谢谢 这就是产生错误的地方:empFile.SaveToFile('Data\Emp\'+Emp+'\'+Emp+'\'+Emp+'.txt') procedure TfmMain.btSaveRetClick(发送方:TObject); 变量 select,pos1,pos2,pos3,i:integer;

我到处都在找,但我好像没法找到它。当我运行这段代码时,我得到一个EFCreateError,告诉我该文件被另一个进程使用。我对使用TStringLists有点陌生,所以我需要你的帮助!提前谢谢

这就是产生错误的地方:empFile.SaveToFile('Data\Emp\'+Emp+'\'+Emp+'\'+Emp+'.txt')

procedure TfmMain.btSaveRetClick(发送方:TObject);
变量
select,pos1,pos2,pos3,i:integer;
fileBuffer,rentFile:TextFile;
rCode,emp,buffer,retBuffer:string;
empFile:TStringList;
开始
如果lbReturn.Items.Count为0,则
开始
选择:=Messagedlg('Retourner les items?',mtConfirmation,[mbYes,mbNo],0);
如果选择=mrYes,则
开始
empFile:=TStringList.Create;
AssignFile(fileBuffer,'Data\fileBuffer.dat');
AssignFile(rentFile,'Data\rented.dat');
lbReturn.Items.SaveToFile('Data\filebuffer.dat');
重置(文件缓冲区);
重置(文件);
重复
开始
ReadLn(fileBuffer,buffer);
pos1:=AnsiPos(“|”,buffer);
rCode:=AnsiLeftStr(缓冲区,位置1-2);
重复
开始
ReadLn(rentFile,retBuffer);
pos2:=AnsiPos(rCode,retBuffer);
如果是20那么
开始
pos3:=AnsiPos(“|”,retBuffer);
emp:=AnsiRightStr(retBuffer,(长度(retBuffer))-pos3-1;
empFile.LoadFromFile('Data\Emp\'+Emp+'\'+Emp+'.txt');
i:=empFile.IndexOf(缓冲区);
删除(i);
empFile.SaveToFile('Data\Emp\'+Emp+'\'+Emp+'.txt');
empFile.Clear;
结束;
结束;
直到EOF(租赁文件);
结束;
直到EOF(文件缓冲区);
empFile.Free;
结束;
结束
其他的
开始
MessageDlg('Aucun itemáenregister!',mtError[mbOK],0);
结束;
结束;

EFCreateError是由无效的文件名、访问权限不足或磁盘空间不足引起的:

是的,我知道,我想知道的是这个文件的用途。您可以使用Process Explorer来实现这一点:Ctrl+F显示搜索对话框确定我找到了!我只是忘记了在代码的前面关闭一个文本文件。
procedure TfmMain.btSaveRetClick(Sender: TObject);
var
    select, pos1, pos2, pos3, i: integer;
    fileBuffer, rentFile: TextFile;
    rCode, emp, buffer, retBuffer: string;
    empFile: TStringList;

begin
    if lbReturn.Items.Count <> 0 then 
    begin
        select:=Messagedlg('Retourner les items?', mtConfirmation, [mbYes, mbNo],0);
        if select=mrYes then 
        begin
            empFile:=TStringList.Create;
            AssignFile(fileBuffer, 'Data\filebuffer.dat');
            AssignFile(rentFile, 'Data\rented.dat');
            lbReturn.Items.SaveToFile('Data\filebuffer.dat');
            Reset(fileBuffer);
            Reset(rentFile);

            repeat 
            begin
                ReadLn(fileBuffer, buffer);
                pos1:=AnsiPos('|', buffer);
                rCode:=AnsiLeftStr(buffer, pos1-2);
                repeat 
                begin
                    ReadLn(rentFile, retBuffer);
                    pos2:=AnsiPos(rCode, retBuffer);
                    if pos2<>0 then 
                    begin
                        pos3:=AnsiPos('|', retBuffer);
                        emp:=AnsiRightStr(retBuffer, (Length(retBuffer))-pos3-1);
                        empFile.LoadFromFile('Data\Emp\'+emp+'\'+emp+'.txt');
                        i:=empFile.IndexOf(buffer);
                        empFile.Delete(i);
                        empFile.SaveToFile('Data\Emp\'+emp+'\'+emp+'.txt');
                        empFile.Clear;
                    end;   
                end;
                until EOF(rentFile);
            end;
            until EOF(fileBuffer);
        empFile.Free;
        end;
    end 
    else 
    begin
        MessageDlg('Aucun item à enregistrer!', mtError, [mbOK], 0);
    end;
end;