IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Copier un fichier en C++ [D�butant]


Sujet :

C++Builder

  1. #1
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut Copier un fichier en C++
    Bonjour,

    j'ai un peu honte de poster cela, je vais passer pour un gros noob mais pas grave

    Quelle commande utilisez-vous pour faire une copie de fichier d'un endroit (exemple : clef usb ) vers un autre ( exemple : disque dur c:\test ")

    J'ai toujours utilis� CopyFileEx jusqu'� pr�sent, qui me permet d'appeler une fonction callback pour mettre � jour une barre de progression.

    Le seul truc un peu emb�tant est que je ne suis jamais arriv� � mettre la callback dans une classe, mais c'est peut-�tre impossible � faire du fait de la nature de la fonction (callback).

    Par contre sur plus d'une centaine de fichiers copi�s avec succ�s, j'ai deux fichiers de grosse taille ( 1.7 et 1.6 Go ) qui sortent en erreur ( retour de la fonction FileCopyEx � false ).

    Est-ce qu'il y a une limite � cette fonction ou bien ?
    J'ai regard� un peu sur l'aide XE3 mais ils ne parlent pas de limitation

    Et pourtant c'est quand m�me �trange que pile poile les deux fichiers qui ne veulent pas se copier sont tous les deux de grosse taille.

    Qu'en pensez-vous ?

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, est-ce que tu as essayer d'utiliser TFile::Copy?

  3. #3
    Membre exp�riment�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par d�faut
    J'utilise les API pour faire �a. SHFileOperation.
    Pour le shell, je fais confiance au shell et d'une version de Windows � l'autre �a se passe bien.
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    Ce n'est vraiment pas compliqu� � programmer. Le seul truc est qu'il faut s�parer les noms de fichier dans la liste (szFrom) avec \0 et mettre un \0 suppl�mentaire � la fin (soit 2 \0\0).

    A noter que depuis Vista Microsoft recommande de ne plus utiliser SHFileOperation mais IFileOperation. Evidemment IFileOperation ne fonctionnera pas sous XP.

  4. #4
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Merci � tous les deux pour vos r�ponses,

    J'ai test� la fonction Copy, elle fonctionne m�me sur les gros fichiers.
    On a donc bien une limitation sur la commande CopyFileEx, mais pour info je suis sur image VMware windows XP, donc peut-etre une limite de l'OS XP 32bits ?

    Bref, je vais faire comme �a pour l'instant, on a pas la barre d'avancement ( pas de callback ) mais c'est pas grave, �a me permet de ne pas rester bloqu� d�j� c'est pas mal !!

    Je donne le code si des fois quelqu'un en a besoin un jour :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <System.IOUtils.hpp> // ne pas oublier de mettre ça en début de programme
     
    TFile *b;
    b = new TFile();
     
    b->Copy("test.bin","c:\\test\\test.bin");
     
    delete b;
    b=NULL;

  5. #5
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Citation Envoy� par Argol_Medusa Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <System.IOUtils.hpp> // ne pas oublier de mettre ça en début de programme
     
    TFile *b;
    b = new TFile();
     
    b->Copy("test.bin","c:\\test\\test.bin");
     
    delete b;
    b=NULL;
    Salut tu as trop de code pour rien La fonction Copy de TFile est static:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    	static void __fastcall Copy(const System::UnicodeString SourceFileName, const System::UnicodeString DestFileName)/* overload */;
    Donc tu pourrais simplement faire ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #include <System.IOUtils.hpp> // ne pas oublier de mettre ça en début de programme
     
    TFile::Copy("test.bin","c:\\test\\test.bin");

  6. #6
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Ha oui effectivement, tr�s bonne remarque

  7. #7
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    59
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Par d�faut CopyFileEx
    Juste pour info CopyFileEx peut copier des fichiers bien sup�rieurs � 2Go
    je l'utilise dans un vieux programme depuis longtemps
    je viens de copier un fichier de 3,8Go sans le moindre probl�me
    sans �tre s�r de ce que j'avance il me semble avoir eu un probl�me � l'�poque qui venait du calcul du progressbar
    une valeur qu'il � fallu multiplier par 4 pour les gros fichiers
    il faudrait que je fouille pas mal pour trouver ce que j'ai fait pour rem�dier � cela

  8. #8
    Membre tr�s actif Avatar de Argol_Medusa
    Homme Profil pro
    Ing�nieur Radiofr�quences
    Inscrit en
    Ao�t 2005
    Messages
    208
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Radiofr�quences
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 208
    Par d�faut
    Merci pour les informations.
    Par contre je te confirme que �a ne vient pas de la ProgressBar de mon cot�, c'est vraiment la fonction CopyFileEx qui me remonte une erreur d�s son ex�cution, mon probl�me semble donc est diff�rent du tiens.

    Du coup j'avais r�solu le probl�me en passant par une autre fonction, et je n'ai pas creus� plus.
    Ca d�pend peut-�tre des OS c'est tr�s �trange en tout cas.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. copier des fichiers
    Par Daeron dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 24/11/2004, 14h45
  2. Copier certains fichiers d'une arborescence ?
    Par narmataru dans le forum Linux
    R�ponses: 4
    Dernier message: 27/04/2004, 12h15
  3. Copier coller Fichier windows
    Par KPitN dans le forum Windows
    R�ponses: 8
    Dernier message: 20/04/2004, 17h32
  4. Batch pour copier des fichier
    Par borgfabr dans le forum Scripts/Batch
    R�ponses: 3
    Dernier message: 09/03/2004, 07h55
  5. D�tourner une fonction pour copier un fichier en m�moire
    Par Rodrigue dans le forum C++Builder
    R�ponses: 6
    Dernier message: 12/11/2003, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo