Cosa fa ShfileOperation quando il cestino è pieno?
-
19-09-2019 - |
Domanda
Uso questa procedura:
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;
Cosa succederà se il cestino è pieno, restituisce in modo permanente il file falso o elimina in modo permanente?
Qualsiasi aiuto sarebbe apprezzato.
Soluzione
Il modo migliore per scoprirlo è effettivamente farlo. Ha reso il mio cestino per il riciclo minimo dell'1 percento dell'unità. Ho creato un sacco di file di grandi dimensioni e ha utilizzato la tua funzione per spostarli per riciclare il cestino.
Quello che sto scoprendo (su XP comunque) è che la funzione la sposta sempre nel cestino del riciclo; ma elimina permanentemente il file eliminato più antico. Quindi appare quando il bidone del riciclaggio riempie, impiega un approccio "primo in - primo" per decidere quale file avvia.
Non sono stato in grado di ottenere la funzione per restituire false. Forse la creazione di un file troppo grande per il cestino del riciclo allocato, fai questo.