CopyFile ne fait rien [Résolu]

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

4 réponses

Répondre au sujet
cs_grandvizir 1237 Messages postés samedi 8 novembre 2003Date d'inscription 3 septembre 2006 Dernière intervention - 19 juil. 2005 à 14:22
+3
Utile
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).

===========
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_grandvizir
cs_grandvizir 1237 Messages postés samedi 8 novembre 2003Date d'inscription 3 septembre 2006 Dernière intervention - 19 juil. 2005 à 13:27
+1
Utile
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
eaww 2 Messages postés mardi 19 juillet 2005Date d'inscription 19 juillet 2005 Dernière intervention - 19 juil. 2005 à 13:53
0
Utile
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
cs_grandvizir 1237 Messages postés samedi 8 novembre 2003Date d'inscription 3 septembre 2006 Dernière intervention - 19 juil. 2005 à 14:17
0
Utile
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.