Hello Conor, Thanks but it invokes an error message: 'Cannot delete file:cannot read from the source file or disk'
Would this have anything to do with WinXP administration rights? Although I can delete all manually OK. Alistair+ procedure TForm1.FormShow(Sender: TObject); var R: TShFileOpStruct; foldername:string; begin foldername:='c:\temp'; If not DirectoryExists(FolderName) then Exit; FolderName := IncludeTrailingBackslash(FolderName); FolderName := FolderName + '*.*'; FillChar(R, SizeOf(r), 0); r.wFunc := FO_DELETE; r.pFrom := PChar(FolderName); r.fFlags := FOF_NOCONFIRMATION; if((ShFileOperation(r) = 0) and //<=== error here (not r.fAnyOperationsAborted)) then ; close; end; Tuesday, November 12, 2002, 9:13:54 AM, you wrote: CB> To clarify, the second parameter to my function below (LeaveFolder) CB> specifies whether or not to delete the actual folder you specify, or just to CB> empty it of all it's files and subfolders. CB> The ShellAPI unit can be very useful for things like this. The same CB> ShFileOperation can be used for other things like copying files, and will CB> throw up the standard Windows progress dialog etc, depending on which flags CB> you set and how long Windows reckons the operation will take. CB> Cheers, CB> Conor CB> -----Original Message----- CB> From: Conor Boyd [mailto:Conor.Boyd@;treasury.sungard.com] CB> Okay, here you go. This should be much tidier than shelling out to a CB> command prompt, since it's using a Windows OS Shell function. CB> This works on 95, NT, and above, according to the Microsoft SDK help. CB> uses ShellApi, FileCtrl; CB> function DeleteFolder(FolderName: String; LeaveFolder: Boolean) : Boolean; CB> var CB> R: TShFileOpStruct; CB> begin CB> Result := False; CB> If not DirectoryExists(FolderName) then Exit; CB> FolderName := IncludeTrailingBackslash(FolderName); CB> If LeaveFolder then begin CB> FolderName := FolderName + '*.*'; CB> end else begin CB> if FolderName[Length(FolderName)] = '\' then begin CB> Delete(FolderName,Length(FolderName),1); CB> end; CB> end; CB> FillChar(R, SizeOf(r), 0); CB> r.wFunc := FO_DELETE; CB> r.pFrom := PChar(FolderName); CB> r.fFlags := FOF_ALLOWUNDO OR FOF_NOCONFIRMATION; CB> Result := ((ShFileOperation(r) = 0) and (not r.fAnyOperationsAborted)); CB> end; CB> Using the ShFileOperation function and specifying the FOF_ALLOWUNDO flag CB> will also make use of your Recycle Bin. ;-) CB> If you want to tweak it, you should be able to find out more info from the CB> SDK help that comes with Delphi. CB> Enjoy... CB> Cheers, CB> Conor CB> --------------------------------------------------------------------------- CB> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] CB> Website: http://www.delphi.org.nz CB> To UnSub, send email to: [EMAIL PROTECTED] CB> with body of "unsubscribe delphi" CB> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/ -- Regards, Alistair+ --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/