¿Qué hace ShfileOperation cuando el contenedor de reciclaje está lleno?
-
19-09-2019 - |
Pregunta
Yo uso este procedimiento:
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;
¿Qué pasará si el contenedor de reciclaje está lleno, devuelve falso o elimina el archivo de forma permanente?
Cualquier ayuda sería apreciada.
Solución
La mejor manera de averiguarlo es hacerlo realmente. Hizo que mi contenedor de reciclaje fuera mínimo del 1 por ciento de la unidad. Creó un montón de archivos grandes y usó su función para moverlos para reciclar Bin.
Lo que estoy descubriendo (en XP de todos modos) es que la función siempre la mueve al contenedor de reciclaje; pero elimina permanentemente el archivo eliminado más antiguo. Por lo tanto, aparece cuando el contenedor de reciclaje se llena, emplea un enfoque de tipo "Primero adentro - First Out" para decidir qué archivo arrancar.
No pude obtener la función para devolver falso. Quizás la creación de un archivo demasiado grande para el contenedor de reciclaje asignado haga esto.