Я использую эту процедуру:
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;
Что произойдет, если корзина будет полна, она возвращает false или удаляет файл постоянно?
Любая справка ценилась бы.
Лучший способ узнать - это сделать это на самом деле. Моя корзина должна составлять минимум 1 процент от диска. Создал кучу больших файлов и использовал вашу функцию, чтобы переместить их в корзину.
Я обнаружил (в любом случае, на XP), что функция всегда перемещает их в корзину; но удаляет безвозвратно самый старый удаленный файл. Похоже, что когда корзина заполняется, она использует подход типа «первым пришел - первым ушел», чтобы решить, какой файл загружать.
Мне не удалось заставить функцию возвращать false. Возможно, создайте файл, слишком большой для выделенной корзины.