CopyFile ne fait rien [Résolu]

Messages postés
2
Date d'inscription
mardi 19 juillet 2005
Dernière intervention
19 juillet 2005
- 19 juil. 2005 à 11:25 - Dernière réponse :
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Dernière intervention
3 septembre 2006
- 19 juil. 2005 à 14:22
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é...
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Dernière intervention
3 septembre 2006
- 19 juil. 2005 à 14:22
3
Merci
J'oubliais, si IncludeTrailingDelimiter n'est pas trouvée sur ta machine, regarde la fonction IncludeTrailing de http://www.delphifr.com/code.aspx?ID=32533 qui propose strictement la même chose (j'ai des pb chez moi avec cette fonction).

===========

Merci cs_grandvizir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Dernière intervention
3 septembre 2006
- 19 juil. 2005 à 13:27
1
Merci
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...

Commenter la réponse de cs_grandvizir
Messages postés
2
Date d'inscription
mardi 19 juillet 2005
Dernière intervention
19 juillet 2005
- 19 juil. 2005 à 13:53
0
Merci
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
Commenter la réponse de eaww
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Dernière intervention
3 septembre 2006
- 19 juil. 2005 à 14:17
0
Merci
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...

Commenter la réponse de cs_grandvizir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.