Changer de repertoire de sauvegarde bis

Résolu
cs_nark0 Messages postés 5 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 novembre 2004 - 9 nov. 2004 à 20:39
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 10 nov. 2004 à 17:42
Bonjour,
Je me suis inspiré du code proposé par loulibier afin de changer de repertoire de sauvegarde d'un fichier à savoir :

var
sPath : string;
begin
if OpenDialog.Execute = True then
begin
if SelectDirectory('Nouveau chemin','',sPath ) then
begin
if CopyFile(PChar(OpenDialog.FileName),PChar(sPath + '\' + ExtractFileName(OpenDialog.FileName)),False) = True then
DeleteFile(OpenDialog.FileName);
end;
end;
end;

Mais je rencontre un problème...
Quand l'utilisateur selectionne la racine d'un disque comme repertoire de destination (C:/, D:/...) cela provoque une erreur du fait de l'ajout du '\' au code vu que le repertoire de destination devient C://fichier...
Quelqu'un aurait-il une solution???

Merci d'avance pour le/les réponse(s) éventuelle(s)...

5 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
9 nov. 2004 à 21:17
Cela fait que, en selectionnant C:\\, le prog rajoute / et tu obtient C:\\/ et là, c'est pas bon du tout.

Pour que le slash séparateur de fin de dossier soit présent comme il faut, il existe dune fonction toute faite :
IncludeTraillingPathDelimiter(Path  string) : string


Ce qui pour ton code donne :
var
  SPath : string;
begin
if Opendialog1.Execute then
  if SelectDirectory('Nouveau chemin','',sPath) then
    if CopyFile(PChar(Opendialog1.FileName),
    PChar(IncludeTrailingPathDelimiter(SPath) + ExtractFileName(Opendialog1.FileName)),false) then
      DeleteFile(Opendialog1.FileName);


Et voila !!

Mais je t'esplique ce que fait le code :
-Tu execute la boite de dialogue et tu vérifie qu'on a choisi un fichier.
-Tu demande, à l'aide de SelectDirectory, un nouveau dossier.
-Tu copie le fichier dans ce nouveau dossier.
-Tu efface l'original.

Bilan des courses : Tu déplace le fichier et donc, à la place de ton code, je metterai la fonction MoveFile qui permet de bouger un fichier.

En gros :
var
  sPath : string;
begin
if (Opendialog1.Execute) and (SelectDirectory('Nouveau chemin','',sPath )) then
  MoveFile(PChar(Opendialog1.FileName),
  PChar(IncludeTrailingPathDelimiter(sPath) + ExtractFileName(Opendialog1.FileName)));

Quelques optimisations dde code comme le AND entre les conditions IF : c'est moins lourd.

Voila, et c'est bien plus simple comme cela ...

@ ++ Florent

Si tu ne te plantes pas ......
tu ne poussera jamais

Clique sur REPONSE ACCEPTEE si ma reponse te convient
3
cs_nark0 Messages postés 5 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 novembre 2004
9 nov. 2004 à 20:44
Remarque : Je suis débutant et j'ai peut-etre simplement mal adapté le code à mes besoins...donc, s'il vous plait, soyez indulgents si c'est le cas et excusez moi pour la perte de temps et l'encombrement du forum occasionné...
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
9 nov. 2004 à 21:19
ERRATUM :
dans la premiere ligne il fallait lire :

Cela fait que, en selectionnant C:\\, le prog rajoute \ et tu obtient C:\\\ et là, c'est pas bon du tout.
0
cs_nark0 Messages postés 5 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 novembre 2004
9 nov. 2004 à 23:11
Celà fonctionne parfaitement!
Un grand merci pour ton aide!
0

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

Posez votre question
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
10 nov. 2004 à 17:42
Pour extraire le vrai dossier, il suffit juste d'utiliser la fonction ExtractFilePath (et non pas ExtractFileDir). De plus, IncludeTrailingPathDelimiter n'est plus utilisé.

===========
ViewVite : HTML - ZIP
0
Rejoignez-nous