2009-12-16 14 views
7

Io uso questa procedura:Cosa fa ShFileOperation quando il cestino è pieno?

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; 

che cosa accadrà se il cestino è pieno, vuol restituire false o eliminare file in modo permanente?

Qualsiasi aiuto sarebbe apprezzato.

+0

Rientra il codice di quattro spazi per visualizzarlo correttamente. –

+0

Non ero a conoscenza del fatto che il Cestino può essere "pieno". Come funziona? –

+0

A proposito: bella funzione. In realtà è bello sapere come spostarsi nel cestino. Ho sempre usato la funzione "deletefile". –

risposta

3

Il modo migliore per scoprirlo è effettivamente farlo. Ha reso il mio cestino almeno l'1% del disco. Creato un sacco di file di grandi dimensioni e usato la tua funzione per spostarli nel cestino.

Quello che sto scoprendo (su XP comunque) è che la funzione lo sposta sempre nel cestino; ma elimina definitivamente il file cancellato più vecchio. Quindi appare quando il cestino si riempie e impiega un approccio di tipo "primo in-prima uscita" per decidere quale file avviare.

Non è stato possibile ottenere la funzione per restituire false. Forse creare un file troppo grande per il cestino assegnato farlo.

+0

Grazie per aver provato! Questa sarà una brutta notizia cattiva per il mio cliente .. – Irwan

+0

Se è così importante che i tuoi clienti conservino i file nel loro cestino, perché non rimuove solo il limite del cestino? – jpfollenius

+0

È un utente normale, quindi suppongo che non ne sia a conoscenza – Irwan