views:

244

answers:

1

I use this procedure:

function MoveToRecycle(sFileName: widestring): Boolean;
var
  fos: TSHFileOpStructW;
begin
  FillChar(fos, SizeOf(fos), 0);
  with fos do
  begin
    wnd := 0;
    wFunc  := FO_DELETE;
    pFrom  := PWideChar(sFileName + #0 + #0);
    pTo := #0 + #0;
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
  end;
  Result := (ShFileOperationW(fos) = 0);
end;

What will happen if the recycle bin is full, does it return false or delete file permanently ?

Any help would be appreciated.

+3  A: 

The best way to find out is to actually do it. Made my recycle bin be minimum 1 percent of drive. Created a bunch of large files and used your function to move them to recycle bin.

What I am finding out (on XP anyways) is that the function always moves it to the recycle bin; but deletes permanently the oldest deleted file. So it appears when the recycle bin fills up it employs a "first in - first out" type approach to decide which file to boot out.

I was not able to get the function to return false. Perhaps creating a file too large for the allocated recycle bin do this.

M Schenkel
Thanks for trying it out! This gonna be a very bad bad news for my customer..
Irwan
If it's so important for your customer to keep the files in their recycle bin, why doesn't he just remove the recycle bin limit?
Smasher
He is a regular user, so I guess he doesn't aware about that
Irwan