CopyFile ne fait rien [Résolu]

Signaler
Messages postés
2
Date d'inscription
mardi 19 juillet 2005
Statut
Membre
Dernière intervention
19 juillet 2005
-
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
-
Salut, j'ai un soucis avec la fonction copyfile je l'utilise pour effectuer une sauvegarde et il ne se passe rien du tout : ni message d'erreur ni fichier copié...
si quelqu'un pouvait jeter un coup d'oeil à mon code ce serait sympa...


// Lecture de TGV.ini pour récupérer le chemin de sauvegarde
fichier := TiniFile.Create(ExtractFilePath(Application.ExeName)+'TGV.ini');
chemin_save := Ed_Rep_Sauvegarde.Text;
fichier.WriteString('CHEMIN','ch_donnees_save',chemin_save);
chemin_use := fichier.ReadString('CHEMIN','ch_bdd_use','')+'BDD_TGV\Projet_TGV.mdb';

// Création des répertoires Images et BDD_TGV s'ils n'existent pas
if (DirectoryExists (chemin_save+'images') = False) then
CreateDir (chemin_save+'images');

if (DirectoryExists (chemin_save+'BDD_TGV') = False) then
CreateDir (chemin_save+'BDD_TGV');

//jusqu'ici tout est correct les fichiers sont créés et les valeurs pour chemin_save et chemin_use sont bon aussi...
// Sauvegarde de la BDD
CopyFile(PChar(chemin_use),PChar (chemin_save+'BDD_TGV\Projet_TGV.mdb'),True);

//après ce la il ne c rien passé...

3 réponses

Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
fmxutils.pas du répertoire Delphi\Demos\

Y'a une fonction pour copier "proprement" un fichier. C'est du Delphi, pas un API Windows. Par l'Api, c'est la même fonction que supprimier un fichier, mais avec un paramètre qui diffère.

mkdir pour créer un dossier
rmdir pour effacer un dossier vide

Essaye :chemin_save :IncludeTrailingDelimiter(...);
Validez les réponses si ok...

Messages postés
2
Date d'inscription
mardi 19 juillet 2005
Statut
Membre
Dernière intervention
19 juillet 2005

merci pour l'info seulement je n'ai pas trouvé de doc sur cette fonction donc je ne sais pas trop comment l'utiliser et quand je tente quelque chose delphi me renvoi un message d'erreur m'indiquant ke c un identificateur non déclaré...

il y a peut être quelque chose à ajouter au uses??

si c possible de m'aider encore un peu ou de me montrer de la doc dessus ce serai sympa,
merci encore
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
procedure CopierFichier(const FileName, DestName: string);
var CopyBuffer: Pointer;
BytesCopied: Longint;
Source, Dest: Integer;
const ChunkSize: Longint = 8192;
begin
GetMem(CopyBuffer, ChunkSize);
try
Source:=FileOpen(FileName, fmShareDenyWrite);
if Source < 0 then
raise EFOpenError.CreateFmt(SFOpenError, [FileName]);
try
Dest:=FileCreate(DestName);
if Dest < 0 then raise EFCreateError.CreateFmt(SFCreateError, [DestName]);
try
repeat
BytesCopied:=FileRead(Source, CopyBuffer^, ChunkSize);
if BytesCopied > 0 then
FileWrite(Dest, CopyBuffer^, BytesCopied);
until BytesCopied < ChunkSize;
finally
FileClose(Dest);
end;
finally
FileClose(Source);
end;
finally
FreeMem(CopyBuffer, ChunkSize);
end;
end;

CopierFichier se paramètre avec des chemins absolus.

IncludeTrailingDelimiter permet d'avoir des chemins avec un "" final, ce qui évite que c:\dossier\fichier.txt ne soit c:\dossierfichier.txt si ta variable contenant le nom du dossier vaut 'c:\dossier'.

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