Bonjour à tous

Variables globales :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
  Ptr_Search : ^TJvSearchFiles;
  Ptr_SHFiles : ^TJvSHFileOperation;
Procedure appelant la fonction et syntaxe d'appel :
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;
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
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;
Malgré les options passées à JvSHFilesOperation, L'OS me demande confirmation :


Pourquoi ?

Voici les paramètres que je passe à la démo des Jedi :


... et là, ça marche. Pas de confirmation, rien.