Что делает ShFileOperation, когда корзина полна?

Я использую эту процедуру:

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 или удаляет файл постоянно?

Любая справка ценилась бы.

7
задан Rob Kennedy 16 December 2009 в 06:59
поделиться

1 ответ

Лучший способ узнать - это сделать это на самом деле. Моя корзина должна составлять минимум 1 процент от диска. Создал кучу больших файлов и использовал вашу функцию, чтобы переместить их в корзину.

Я обнаружил (в любом случае, на XP), что функция всегда перемещает их в корзину; но удаляет безвозвратно самый старый удаленный файл. Похоже, что когда корзина заполняется, она использует подход типа «первым пришел - первым ушел», чтобы решить, какой файл загружать.

Мне не удалось заставить функцию возвращать false. Возможно, создайте файл, слишком большой для выделенной корзины.

3
ответ дан 7 December 2019 в 16:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: