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

Langage Delphi Discussion :

CopyFile ne fonctionne pas avec des caractères génériques.


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut CopyFile ne fonctionne pas avec des caractères génériques.
    Bonjour

    La question est dans le sujet.
    Après avoir écumé les forums et FAQ, aucune solution ne fonctionne et pourtant, il y est affirmé le contraire. Voirhttp://www.experts-exchange.com/Prog..._20644008.html

    Le problème semble résider dans la destination.
    Mais que l'on fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         CopyFile(PChar(SourceDir + '*.Zip'), PChar(DestDir));
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         CopyFile(PChar(SourceDir + '*.Zip'), PChar(DestDir + ExtractFileName(SourceDir + '*.Zip')));
    , rien ne se passe.

    Et pourtant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if FileExists(SourceDir + '*.Zip')
    renvoie bien True.
    Alors, où est l'erreur ?

    Merci pour vos explications.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 553
    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 553
    Points : 25 133
    Points
    25 133
    Par défaut
    Ben, tu supposerais que si la destination contient *, il faudrait que Windows devine le nom du fichier, ... CopyFile copie des fichiers, tu voudrais que la fonction comprenne implicitement que tu ne veux en fait que déplacer des fichiers d'un répertoire vers un autre ... allez, FindFirst\FindNext, comme tout le monde ... d'ailleurs dans le lien, c'est qu'il utilise, ou sinon c'est un ShellOperation ...

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    class procedure ....ChangeLocalLogDirectory();
    var
      SearchItem:  TSearchRec;
      PathLog: String;
      BackUpPathLog: String;
      Compteur: Integer;
    const
      BackUpDir = 'BackUp\';
      LogMaskExt = '*.*';
    begin
      PathLog := GetLocalLogDirectory();
      if FindFirst(PathLog + LogMaskExt, faAnyFile - faDirectory, SearchItem ) = 0 then
      begin
        try
          BackUpPathLog := PathLog + BackUpDir + 'Log ' + FormatDateTime('yyyy-mm-dd (dddd d mmmm)',Now()) + '\';
     
          Compteur := 1;
          while DirectoryExists( BackUpPathLog + 'No ' + IntToStr(Compteur) ) do 
          begin
               Compteur := Compteur + 1;
          end;
          BackUpPathLog := BackUpPathLog + 'No ' + IntToStr(Compteur) + '\';
          if not DirectoryExists(BackUpPathLog) then 
          begin
            ForceDirectories(BackUpPathLog);
          end;
     
          // Déplacement des Fichiers
          repeat
            if (SearchItem.Name <> '.') and (SearchItem.Name <> '..')  then 
            begin
              if MoveFile( PChar(PathLog + SearchItem.Name), PChar(BackUpPathLog + ExtractFileName(SearchItem.Name)) ) then 
              begin
                 beep;
              end;
            end;
          until not ( FindNext(SearchItem) = 0 ); // Continuer tant que FindNext renvoi 0
        finally
              FindClose(SearchItem);
        end;
      end;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    J'ai bien lu ta réponse.

    Avant de faire la copie, je fais et je constate que DestDir est créé en lecture seule. Et pas moyen de changer l'attribut.

    J'ai déjà eu ce problème et il s'agissait d'un virus.

    Je vous tiendrai au courant quand je l'aurai éliminé.

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Question à ShaiLeTroll :
    Est-ce que ta procédure fonctionne pour copier d'un CD vers le disque dur ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 553
    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 553
    Points : 25 133
    Points
    25 133
    Par défaut
    MkDir ? en Delphi, c'est ForceDirectories ... sinon, ouais tu as un soucis mais je doute que CopyFile soit aussi intelligente de toute façon, sinon, je me serais bien fait chier depuis longtemps ...

    EDIT, ah copie de CD, bien sur, oui elle fonctionne mais faut faire un SetAttrFile ensuite car évidemment des fichiers sur un CD c'est en lecture seule, et windows en conserve l'attribut, c'est un piège ... dommage, je n'ai plus le code source d'un mini-installeur que j'avais fait en Delphi (façon InstallShield, sauf que c'était Install Shai et tout était codé en dur), j'avais fait tout ça, et justement le lecture seule, je m'étais fait avoir la 1ère fois
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/03/2014, 11h52
  2. Réponses: 1
    Dernier message: 16/08/2010, 15h33
  3. sort by ne fonctionne pas avec des subtables
    Par ekremyilmaz dans le forum JSF
    Réponses: 1
    Dernier message: 27/07/2010, 13h17
  4. [Make] ne fonctionne pas avec des .cpp
    Par Jean_Benoit dans le forum Systèmes de compilation
    Réponses: 3
    Dernier message: 19/09/2006, 21h32
  5. [VBA-Excel] Tri de listview ne fonctionne pas avec des nombres à virgule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2006, 15h32

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