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

 Delphi Discussion :

copie de fichiers ?


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut copie de fichiers ?
    bonjour à tous

    je n'arrive pas à copier des fichiers.

    dans une procédure de sauvegarde, j'arrive à copier les fichiers d'un répertoire donné vers la currentdirectory

    Mais là je suis perdu, je pense avoir fait la même chose mais cela ne fonctionne pas.

    combobox1 affiche des noms.

    Si le fichier est présent, il me dit 'le fichier est déjà sur le disque' sinon il me dit que le fichier a été copié.
    Mais pas de fichier copié!! (perdu!! Essaie encore)

    Pouvez vous, s'il vous plait, m'aider et me dire où se trouve mon erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    procedure TForm1.CopierRomClick(Sender: TObject);
      var
        Chemin1 : string;
        Chemin2 : string;
        Fichier : string;
      begin
        Chemin1 := IncludeTrailingPathDelimiter(AfficheRep1.Text);
        Chemin2 := IncludeTrailingPathDelimiter(AfficheRep2.Text);
        if combobox1.ItemIndex =-1
        then
          exit
        else
          Fichier := combobox1.Items[combobox1.Itemindex] +'.doc';
          if FileExists (chemin1 + ExtractFilename(Fichier))
          then
            begin
              showmessage ('le fichier est déjà sur le disque');
            end
          else
            begin
              copyfile ( pchar(chemin2 + ExtractFilename(Fichier)), pchar(Chemin1 + ExtractFileName(Fichier)),true);
              showmessage ('Le fichier a été copié sur le disque');
            end;
     
      end;

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je te conseille :
    1/ de vérifier si CopyFile a bien fonctionné, CopyFile étant une fonction c'est facile.
    2/ Si ça a fonctionné, affiche le nom complet de ton fichier cible dans ton showMessage : tu verras ainsi si tout s'est bien passé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if copyfile ( pchar(chemin2 + ExtractFilename(Fichier)), pchar(Chemin1 + ExtractFileName(Fichier)),true) then
      showmessage ('Le fichier ' + ExpandFileName(Chemin1 + ExtractFileName(Fichier)) + ' a été copié sur le disque')
    else
      showmessage ('pb de copie du fichier vers ' + ExpandFileName(Chemin1 + ExtractFileName(Fichier));

  3. #3
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Vérifie aussi que tes variables Chemin1 et Chemin2 contiennent bien des chemins corrects...

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Question lisibilité, il est préférable d'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if combobox1.ItemIndex >= 0 then
     begin
       Fichier := combob...
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        if combobox1.ItemIndex =-1
        then
          exit
        else 
          Fichier := combob...
    D'ailleurs fait attention à ton Indentation !
    le then ne doit etre à ligne, et tu décales de trop les begin\end

    car ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if combobox1.ItemIndex =-1
        then
          exit
        else
          Fichier := combobox1.Items[combobox1.Itemindex] +'.doc';
          if FileExists (chemin1 + ExtractFilename(Fichier))
          then
            ...
    se comprend

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        if combobox1.ItemIndex =-1 then
          exit
        else
          Fichier := combobox1.Items[combobox1.Itemindex] +'.doc';
     
        if FileExists (chemin1 + ExtractFilename(Fichier)) then
            ...
    alors que tu voulais écrire je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        if combobox1.ItemIndex =-1 then
          exit
        else
        begin
          Fichier := combobox1.Items[combobox1.Itemindex] +'.doc';    
          if FileExists (chemin1 + ExtractFilename(Fichier)) then
             ...
        end;

    au final, le code pourrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    procedure TForm1.CopierRomClick(Sender: TObject);
    var
      Chemin1 : string;
      Chemin2 : string;
      Fichier1 : string;
      Fichier2 : string;
    begin
      Chemin1 := IncludeTrailingPathDelimiter(AfficheRep1.Text);
      Chemin2 := IncludeTrailingPathDelimiter(AfficheRep2.Text);
     
      if combobox1.ItemIndex >= 0 then
      begin
        Fichier1 := chemin1 + ExtractFilename(ChangeFileExt(combobox1.Items[combobox1.Itemindex], '.doc'));
        Fichier2 := chemin2 + ExtractFilename(ChangeFileExt(combobox1.Items[combobox1.Itemindex], '.doc'));
     
        if CopyFile ( PChar(Fichier2), PChar(Fichier1), True) then
          ShowMessage('Le fichier ' + ExpandFileName(Fichier1) + ' a été copié sur le disque')
        else
          ShowMessage('pb de copie du fichier vers ' + ExpandFileName(Fichier1) + ' -> ' + SysErrorMessage(GetLastError()));
      end;

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    aussi les droit,si tu n'est pas administrateur

  6. #6
    Membre à l'essai
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Points : 16
    Points
    16
    Par défaut merci beaucoup
    Un grand merci à DolPat : en effet ma variable chemin1 était fausse
    Je devais être fatigué

    De même un grand merci à ShaiLeTroll : pour toutes ses explications, ses correctifs et ses astuces qui me permettent d'avancer et d'apprendre


    Enfin un grand merci à tous pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de fichier sur le bureau
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/05/2005, 20h57
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 22h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 22h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 12h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 15h23

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