CopyFileTo, comment que ca marche?

cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011 - 30 août 2008 à 23:39
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 31 août 2008 à 01:27
Bien le bonsoir amis programmeurs et programmeuzes,

Apres quelques recherches j'ai trouver une fonction pour copier des fichier : CopyFileTo.

Mais j'ai une erreur de compilation : Appel a une fonction non définie : "CopyFileTo"

Alors j'ai chercher quel fichier inclure et dans l'aide(de mon outil de developpement) il est dit que la fonction CopyFileTo est contenue dans le fichier Unit: IdGlobal.pas

#include ne fonctionne pas, quel est ce fichier? et comment faire pour utiliser CopyFileTo?

Merci d'avance

2 réponses

cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
31 août 2008 à 00:39
J'ai trouvé, merci quand meme

   FILE* Source;
   FILE* Dest;
   char buffer[512];
   int Nb;

   Source = fopen(DirName.c_str(), "rb");
   if ((Dest fopen(NewDir.c_str(), "wb")) NULL)
   {
       fclose(Source);
   }

   while ((Nb=fread(buffer, 1, 512, Source)) != 0)
   fwrite(buffer, 1, Nb, Dest);

   fclose(Dest);
   fclose(Source);
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
31 août 2008 à 01:27
Sous Windows utilise tout simplement CopyFile, plus d'infos ici:
http://msdn.microsoft.com/en-us/library/aa363851(VS.85).aspx

Sinon pour ta fonction je pensse que tu devrait au moins copier par passe de 4k minimum, un exemple qui copie par passe de 1mo:

#define BUFFER_SIZE (0x100000)
DWORD __stdcall FileCopy(LPSTR lpszDst, LPSTR lpszSrc)
{
HANDLE hInFile, hOutFile;
DWORD dwRet = 0, br, bw;
BYTE* lpData;
lpData = (BYTE*) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, BUFFER_SIZE);
if(!lpData) return 0;
hInFile = CreateFile(lpszSrc, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if(hInFile == INVALID_HANDLE_VALUE) goto _Error;
hOutFile = CreateFile(lpszDst, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if(hOutFile == INVALID_HANDLE_VALUE) goto _Error;
while(1)
{
if(!ReadFile(hInFile, lpData, BUFFER_SIZE, &br, 0)) goto _Error;
if(!br) break; // eof
if(!WriteFile(hOutFile, lpData, br, &bw, 0)) goto _Error;
dwRet+=bw;
}
_Error:
HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, lpData);
if(hInFile) CloseHandle(hInFile);
if(hOutFile) CloseHandle(hOutFile);
return dwRet;
}

Neo_Fr
0
Rejoignez-nous