Bonjour à tous
Variables globales :
Procedure appelant la fonction et syntaxe d'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Ptr_Search : ^TJvSearchFiles; Ptr_SHFiles : ^TJvSHFileOperation;
Code de la fonction elle-même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 procedure TForm1.Btn_1Click(Sender: TObject); begin Nom_Rep_Ou_F := 'D:\SAUVEGARDE-W7_COPIE'; Form1.StatusBar.SimpleText := 'SUPPRESSION DE ' + Nom_Rep_Ou_F; Form1.StatusBar.Update; IF Vider_Rep(Nom_Rep_Ou_F, @Form1.JvSearchFiles1, @Form1.JvSHFileOperation1) = False then begin Form1.StatusBar.SimpleText := 'TOUT N''A PU ETRE SUPPRIME'; Form1.StatusBar.Update; end Else begin Form1.StatusBar.SimpleText := 'TOUT A ETE SUPPRIME'; Form1.StatusBar.Update; end; Form1.Btn_Quitter.SetFocus; end;
Malgré les options passées à JvSHFilesOperation, L'OS me demande confirmation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 Function Vider_Rep(Nom_Rep : string; Ptr_Sur_JvSearchFiles : Pointer; Ptr_Sur_JvSHfile : Pointer) : boolean; Var i : integer; Val_Retour : boolean; Options : TJvSHFileOptions; Find : TSearchRec; begin Val_Retour := True; IF FindFirst(Nom_Rep, faAnyFile, Find) <> 0 then // Nom_Rep n'existe pas begin Val_Retour := False; FindClose(Find); Vider_Rep := Val_Retour; Exit; end; IF Find.Attr AND 16 <> 16 then // Nom_Rep ne désigne pas un répertoire begin Val_Retour := False; FindClose(Find); Vider_Rep := Val_Retour; Exit; end; Ptr_Search := Ptr_Sur_JvSearchFiles; Ptr_SHFiles := Ptr_Sur_JvSHfile; // LISTER LES FICHIERS ET REPERTOIRES ---------------- Ptr_Search.Files.Clear; Ptr_Search.Directories.Clear; Ptr_Search.FileParams.FileMask := ''; Ptr_Search.FileParams.FileMasks.Clear; Ptr_Search.RecurseDepth := 10000; Ptr_Search.RootDirectory := Nom_Rep; Ptr_Search.Search; // EFFACEMENT DES FICHIERS ---------------- For i := 0 To Ptr_Search.TotalFiles -1 DO begin FileSetAttr( Ptr_Search.Files.Strings[i], faArchive); IF DeleteFile(Ptr_Search.Files.Strings[i]) <> True then Val_Retour := False; // Un fichier au moins n'a pu être supprimé end; // DEPROTECTION DES REPERTOIRES ---------------- For i := 0 To Ptr_Search.TotalDirectories -1 DO begin FileSetAttr( Ptr_Search.Directories.Strings[i], faArchive); end; // EFFACEMENT DES REPERTOIRES ---------------- Ptr_SHFiles.Options := []; Ptr_SHFiles.SourceFiles.Clear; Ptr_SHFiles.DestFiles.Clear; Include(Options, fofAllowUndo); Include(Options, fofMultiDestFiles); Include(Options, fofNoConfirmation); // Pas de confirmation Include(Options, fofNoConfirmMkDir); Include(Options, fofSilent); Include(Options, fofNoErrorUI); Ptr_SHFiles.SourceFiles.Add(Nom_Rep); Ptr_SHFiles.Operation := foDelete; Ptr_SHFiles.Execute; // CLEAR sur je JvSHFilesOperation ------------ Ptr_SHFiles.Options := []; Ptr_SHFiles.SourceFiles.Clear; Ptr_SHFiles.DestFiles.Clear; // CLEAR sur le JvSearchFiles ----------------- Ptr_Search.Files.Clear; Ptr_Search.Directories.Clear; Ptr_Search.RootDirectory := ''; Vider_Rep := Val_Retour; end;
Pourquoi ?
Voici les paramètres que je passe à la démo des Jedi :
... et là, ça marche. Pas de confirmation, rien.
Partager