Ecraser des repertoires sans confirmation [Résolu]

Signaler
Messages postés
103
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
16 mai 2019
-
Messages postés
103
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
16 mai 2019
-
Bjr

J'enregistre des repertoires pour ma sauvegarde mais si ils existe il faut confirmer l'ecrasement et je voudrais que ca se fasse automatiquement

si quel qu'un sait

Merci d'avance

Louis

6 réponses

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
Essaie ceci:



Ajoute


ShellAPI

dans les uses

puis la fonction :




function EffaceDossier(Dossier: string): Boolean;
var FileOpStruct:
TShFileOpStruct;
begin
FileOpStruct.Wnd := 0;
FileOpStruct.wFunc :=
FO_DELETE;
FileOpStruct.pFrom := PChar(Dossier);
FileOpStruct.pTo :=
nil;
FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;

FileOpStruct.lpszProgressTitle := nil;Result :ShFileOperation(FileOpStruct) 0;
end;

Source: JulioDelphi => Diabloporc.free.fr
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
Je comprends pas bien ta question, tu veux créer un message lorsqu'on
écrase un dossier, ou virer ce type de message ? Dans le doute,
je vais répondre au deux question.



1_

Je ne sais pas quel composant tu utilise mais verifie la propriete Option > ofCreatePrompt (met a Vrai).

Sinon tu vérifie manuellement, avec la fonction DirectoryExists.

Exemple:

If DirectoryExists('C:\Mon repertoire') then //<Ton action>

// Si tu utilise le composant TSaveDialog par exemple, tu fais:


If DirectoryExists(ExtractFilePath(SaveDialog1.FileName) then //<Ton action>



2_

Je ne sais pas quel composant tu utilise mais verifie dans la propriete Option:

- ofCreatePrompt (met a Faux)

- ofOverwritePrompt (met a Faux)
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
MkDir pour créer un dossier.
RmDir pour effacer un dossier (s'il est vide !).

===========
Validez les réponses si ok...

ViewVite XP : HTML
Messages postés
103
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
16 mai 2019

Bjr

En fait ce que je voudrais c'est :
Quand je recopie un repertoire Windows ne me demande pas confirmation avant
d'ecraser celui qui existe deja

je met le code que je me sert

procedure copier(Handle:HWND;Source,Cible:String; FlagsOptions: FILEOP_FLAGS);
var
lpFileOp:TSHFileOpStructA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do
TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_COPY;
lpFileOp.pFrom:=TabFrom;
lpFileOp.pTo:=PAnsiChar(Cible);
lpFileOp.fFlags:=FlagsOptions;
SHFileOperation(lpFileOp);
end;

procedure TForm1.CopierBtnClick(Sender: TObject);
Var
i: integer;
begin
For i := 0 to ListBoxRepSource.Items.Count-1 do
begin
EditSauveDepuis.Text := ListBoxRepSource.Items[I];
Copier(Handle,(EditSauveDepuis.Text),(EditRepSauve.Text),FlagsOptions);
If (ListRepSource.Items[I] = ListBoxRepSource.Items[ListBoxRepSource.Items.Count-1])
then MessageDlg(' Sauvegarde de repertoire effectuée avec succés ',mtConfirmation,[mbOK],0);
end;
end;

Merci pour vos reponses

A+ Louis
Messages postés
103
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
16 mai 2019

Bjr

En fait ce que je voudrais c'est :
Quand je recopie un repertoire Windows ne me demande pas confirmation avant
d'ecraser celui qui existe deja

je met le code que je me sert

procedure copier(Handle:HWND;Source,Cible:String; FlagsOptions: FILEOP_FLAGS);
var
lpFileOp:TSHFileOpStructA;
TabFrom:array[0..255] of char;
i:integer;
begin
For i:=0 to length(Source)-1 do
TabFrom[i]:=Source[i+1];
TabFrom[length(Source)]:=#0;
TabFrom[length(Source)+1]:=#0;
lpFileOp.Wnd:=handle;
lpFileOp.wFunc:=FO_COPY;
lpFileOp.pFrom:=TabFrom;
lpFileOp.pTo:=PAnsiChar(Cible);
lpFileOp.fFlags:=FlagsOptions;
SHFileOperation(lpFileOp);
end;

procedure TForm1.CopierBtnClick(Sender: TObject);
Var
i: integer;
begin
For i := 0 to ListBoxRepSource.Items.Count-1 do
begin
EditSauveDepuis.Text := ListBoxRepSource.Items[I];
Copier(Handle,(EditSauveDepuis.Text),(EditRepSauve.Text),FlagsOptions);
If (ListRepSource.Items[I] = ListBoxRepSource.Items[ListBoxRepSource.Items.Count-1])
then MessageDlg(' Sauvegarde de repertoire effectuée avec succés ',mtConfirmation,[mbOK],0);
end;
end;

Merci pour vos reponses

A+ Louis
Messages postés
103
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
16 mai 2019

Merci

cela me vas parfaitement

A+ Louis