Newsgroup: it.comp.lang.delphi
Titolo: Eliminazione Cartelle

Salve, innanzitutto tanti auguri (anche se in ritardo) agli sviluppatori
Delphi e poi vi volevo chiedere aiuto :
  Come faccio ad eliminare una cartella, nell'help ho trovato solo comandi
  per eliminare cartelle vuote(che tra le altre cose non funziona) e file,
la
  versione di Delphi che possiedo č la 5.
Grazie in anticipo, Neo.

   Come faccio ad eliminare una cartella
Prova a vedere l'help della funzione SHFileOperation, dovrebbe fare al caso
tuo.
ciao, Marco.

MarcoC ha scritto nel messaggio ...

Mi dispiace ma nell'help a riguardo non ho trovato nulla. . .
Ma sei Marco Cantů?
Neo

> Ma sei Marco Cantů?
Magari! Ti sarebbe piaciuto eh?
Invece ti devi accontentare di un Marco qualunque :))
visto che non lo hai trovato ti posto quello che contiene il mio Help
(comunque si trova nell'help del Win32 SDK allegato
a Delphi) :
Performs a copy, move, rename, or delete operation on a file system object.
WINSHELLAPI int WINAPI SHFileOperation(
    LPSHFILEOPSTRUCT lpFileOp
   );
Parameters
lpFileOp : Pointer to an SHFILEOPSTRUCT structure that contains information
the function needs to carry out the operation.
Return Values
Returns zero if successful or nonzero if an error occurs.
SHFileOpStruct č una struttura che devi riempire prima e passare alla
funzione:
Contains information that the SHFileOperation function uses to perform file
operations.
typedef struct _SHFILEOPSTRUCT { // shfos
    HWND         hwnd;
    UINT         wFunc;
    LPCSTR       pFrom;
    LPCSTR       pTo;
    FILEOP_FLAGS fFlags;
    BOOL         fAnyOperationsAborted;
    LPVOID       hNameMappings;
    LPCSTR       lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
Members
hwnd
Handle of the dialog box to use to display information about the status of
the operation.
wFunc
Operation to perform. This member can be one of the following values:
FO_COPY Copies the files specified by pFrom to the location specified by
pTo.
FO_DELETE Deletes the files specified by pFrom (pTo is ignored).
FO_MOVE Moves the files specified by pFrom to the location specified by pTo.
FO_RENAME Renames the files specified by pFrom.
Queste costanti permettono di decidere quale operazione effettuare. nel tuo
caso deve essere FO_DELETE.
pFrom
Pointer to a buffer that specifies one or more source file names. Multiple
names must be null-separated. The list of names must be double
null-terminated.
Lo devi impostare al percorso della directory o file che vuoi cancellare.
pTo
Pointer to a buffer that contains the name of the destination file or
directory. The buffer can contain mutiple destination file names if the
fFlags member specifies FOF_MULTIDESTFILES. Multiple names must be
null-separated. The list of names must be double null-terminated.
fFlags
Flags that control the file operation. This member can be a combination of
the following values:
FOF_ALLOWUNDO Preserves undo information, if possible.
FOF_CONFIRMMOUSE Not implemented.
FOF_FILESONLY Performs the operation only on files if a wildcard filename
(*.*) is specified.
FOF_MULTIDESTFILES Indicates that the pTo member specifies multiple
destination files (one for each source file) rather than one directory where
all source files are to be deposited.
FOF_NOCONFIRMATION Responds with "yes to all" for any dialog box that is
displayed.
FOF_NOCONFIRMMKDIR Does not confirm the creation of a new directory if the
operation requires one to be created.
FOF_RENAMEONCOLLISION Gives the file being operated on a new name (such as
"Copy #1 of...") in a move, copy, or rename operation if a file of the
target name already exists.
FOF_SILENT Does not display a progress dialog box.
FOF_SIMPLEPROGRESS Displays a progress dialog box, but does not show the
filenames.
FOF_WANTMAPPINGHANDLE Fills in the hNameMappings member. The handle must be
freed by using the SHFreeNameMappings function.
L'unica costante che ti interessa č FOF_ALLOWUNDO, che se impostato sposta
il file o la directory nel cestino, mentre se
non impostato lo cancella direttamente.
fAnyOperationsAborted
Value that receives TRUE if the user aborted any file operations before they
were completed or FALSE otherwise.
hNameMappings
Handle of a filename mapping object that contains an array of SHNAMEMAPPING
structures. Each structure contains the old and new path names for each file
that was moved, copied, or renamed. This member is used only if fFlags
includes FOF_WANTMAPPINGHANDLE.
lpszProgressTitle
Pointer to a string to use as the title for a progress dialog box. This
member is used only if fFlags includes FOF_SIMPLEPROGRESS.
Remarks
If pFrom or pTo are unqualified names, the current directories are taken
from the global current drive and directory settings as managed by the
GetCurrentDirectory and SetCurrentDirectory functions.
Spero di esserti stato utile.
Ciao, Marco (non Cantů).


Ti rirgrazio per il tuo aiuto ma non sono riuscito a metterlo in pratica se
mi vuoi spiegare meglio (magari con il codice, cosė lo studio) come si fā
fai pure altrimenti non ti preoccupare ci rinuncio(al momento).
Ancora Grazie
Neo
ICQ     :  146381266

 fai pure altrimenti non ti preoccupare ci rinuncio(al momento).
Scusami se ti rispondo solo adesso ma solo stasera ho potuto controllare i
messaggi.
Prima di tutto devi includere la unit "Shellapi" nella clausola "uses" della
tua unit.
Ora puoi fare qualche esperimento con questa funzione:
function TForm1.DeleteFileOrDir(Path: String): Integer;
var
   Fs: TShFileOpStruct;
begin
     FS.Wnd := 0;
     Fs.wFunc := FO_DELETE;
     Fs.pFrom := PChar(Path);
     Fs.pTo := nil;
     Fs.fFlags := FOF_ALLOWUNDO;
     Result := ShFileOperation(Fs);
end;
Nel parametro "Path" devi passare il percorso completo del file e/o
directory da cancellare.
Il parametro "pTo" impostato a "FOF_ALLOWUNDO" fa si che il file venga
spostato nel cestino. Se lo imposti a "0", oppure
non lo imposti, il file verrà eliminato direttamente.
La funzione restituisce zero se va a buon fine, oppure un altro valore se
fallisce.