Функция RemoveAllDir(temp_dir) удаляет временную директорию (в которой обрабатываются файлы: удаляются, перемещаются, пакуются). Если приложение падает, то RemoveAllDir не отрабатывает. Как это исправить?
| Код | // Файл TMP_Creator.dpr program TMP_Creator;
uses Forms, TMPCreator in 'TMPCreator.pas' {Paths_Form1}, CheckingSum in 'CheckingSum.pas', FileList in 'FileList.pas' {Filelist_Form3}, TMP_Set_Params in 'TMP_Set_Params.pas' {Params_Form2}, Final_Dlg in 'Final_Dlg.pas' {Final_Form4}, TMP_Creating in 'TMP_Creating.pas', CopyFile in 'CopyFile.pas', Envmnt_Var_Work in 'Envmnt_Var_Work.pas', RemoveWholeDir in 'RemoveWholeDir.pas', ZLibAdvTools in 'ZLibAdvTools.pas', FolderActions in 'FolderActions.pas', CrtProcess in 'CrtProcess.pas', Lib in 'Lib.pas', QuickView in 'QuickView.pas' {QuickView_Form}, AuthorInf in 'AuthorInf.pas';
{$R *.res}
begin Application.Initialize; Application.CreateForm(TPaths_Form1, Paths_Form1); Application.CreateForm(TFilelist_Form3, Filelist_Form3); Application.CreateForm(TParams_Form2, Params_Form2); Application.CreateForm(TFinal_Form4, Final_Form4); Application.CreateForm(TQuickView_Form, QuickView_Form); Application.Run; CheckBoxes := nil; RemoveAllDir(temp_dir); end. |
| Код | // Функция удаляет всю директорию (файлы, папки и саму директорию) function RemoveAllDir(sDir : String) : Boolean; var iIndex : Integer; SearchRec : TSearchRec; sFileName : String; begin try if DirectoryExists(sDir) then begin CPRun('cmd /c rmdir /S /Q "' + sDir + '"'); Result := True; end; except ShowMessage('Удаление каталога вызвало ошибку ' + IntToStr(GetLastError)); Result := False; end end;
|
|