Ecraser des repertoires sans confirmation

Résolu
louiwahl Messages postés 103 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 16 mai 2019 - 27 juil. 2005 à 23:17
louiwahl Messages postés 103 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 16 mai 2019 - 2 août 2005 à 21:07
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
2 août 2005 à 19:30
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
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 juil. 2005 à 03:53
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)
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
28 juil. 2005 à 09:36
MkDir pour créer un dossier.
RmDir pour effacer un dossier (s'il est vide !).

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

ViewVite XP : HTML
0
louiwahl Messages postés 103 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 16 mai 2019
29 juil. 2005 à 00:16
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louiwahl Messages postés 103 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 16 mai 2019
29 juil. 2005 à 00:16
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
0
louiwahl Messages postés 103 Date d'inscription vendredi 20 février 2004 Statut Membre Dernière intervention 16 mai 2019
2 août 2005 à 21:07
Merci

cela me vas parfaitement

A+ Louis
0
Rejoignez-nous