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 :

Boucle commande COPYFILELIST()


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Boucle commande COPYFILELIST()
    Bonjour à tous
    j'ai un composant FileListBox2.
    Je cherche à copier la liste complète des fichiers dans un répertoire (destination)
    et en même temps je mets ces fichiers dans ma table.DB.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:=0 to FileListBox2.Count-1  do
    begin
      CopyFilelist(FileListBox2.items[i],destination);
      //.....enregistrement dans table.DB
    end;
    Le programme copie les 4 premiers des 29 fichiers présents dans la FileListBox puis après
    en avoir sauté quelques uns 5 autres, alors que l'enregistrement de mes 29 fichiers
    se fait bien dans la table.DB.
    J'ai essayé de ralentir la boucle par une pause de 3 secondes, mais rien n'y fait.
    Je ne sais plus quoi faire d'autre.
    Merci d'avance de vos tuyaux.

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    cela ne va surement pas t'aider, mais avec mon D7, j'ai fait un test. Avec ceci :

    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
    { ========================================================================== }
    procedure TF_Princ.Button1Click(Sender: TObject);
    Var
       i   : Integer ;
    begin
    for i:=0 to FileListBox1.Count-1 do
    begin
        CopyFilelist(FileListBox1.items[i],'C:\ScanImage\Fic');
    end;
    end;
    { ========================================================================== }
    function TF_Princ.CopyFileList( Files: string; DestDir:string): integer;
    var
    SHFileOp: TSHFileOpStruct;
    begin
    result:= 0;
    FillChar (SHFileOp, SizeOf (SHFileOp), 0);
    with SHFileOp do
    begin
    wFunc := FO_COPY; // function
    pFrom := PChar(Files); // file list
    pTo := PChar(DestDir);
    fFlags := 0; // flags
    lpszProgressTitle:= PChar('Copy Files To '+ DestDir ); //Title
    end;
    Result:= SHFileOperation (SHFileOp);
    end;
    Tout se passe bien, tous mes fichiers sont copiés (j'ai fait le test avec 29 fichiers.
    L'erreur doit venir de la suite du code ?

    A+
    Charly

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut boucle commande COPYFILELIST()
    Bonjour,
    Merci pour la réponse.
    j'ai vérifié point par point la fonction COPYFILELIST() que j'utilisais. Rien d'anormal.
    Par acquit j'ai recopié en place votre fonction ,et le problème reste identique.
    Comme il s'agit de fichiers Photos '.JPG' et '.PNG' de grande capacité, il y a peut-être
    un problème de capacité de mémoire ou de tampon quelque part, mais là je n'y connais
    J'ai déjà fait fonctionner cette instruction par ailleurs et cela se passait bien.
    Est-ce un problème d'antivirus qui bloquerait le transfert de ces fichiers ? Je travaille
    avec Kasperski.
    Tous les tuyaux seront les bienvenus. Merci d'avance.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut boucle commande COPYFILELIST
    EUREKA, j'ai trouvé quelque chose qui me convient.
    Au lieu de vouloir copier fichier par fichier, je copie directement
    le répertoire entier par COPYFOLDER().
    Bien sur je ne peux pas copier vraiment de façon rapide un ensemble de
    fichiers sélectionnés au préalable, mais j'ai plus vite fait de supprimer
    les fichiers qui ne m'intéressent pas après les avoir tous copiés.

    Toutefois vous pouvez m'indiquer une façon rapide de copier des fichiers
    car j'aurai de toute façon à faire de nouvelles copies à mettre dans le répertoire existant.
    Sans réponse d'ici quelques jours , je pourrai clore cette discussion.
    Merci pour votre aide.

  5. #5
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Salut,

    les fichiers qui ne sont pas copiés ne contiennent-ils pas des espaces ? !!!

    si Files et/ou DestDir contiennent des espaces il faut les "Quoter"
    soit avec QuotedStr soit avec PathQuoteSpaces ou encore à la main

    Ex.
    C:\repertoire source\mon fichier.jpg ne sera jamais copié ... il faut faire:
    "C:\repertoire source\mon fichier.jpg"

    @+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Boucle commande COPYFILELIST
    Bonjour, et merci pour ce tuyau.
    je vais essayer ultérieurement.
    Cependant, je vais conclure cette discussion maintenant.
    j'y reviendrai peut-être un de ces jours.
    Merci encore à vous tous.

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

Discussions similaires

  1. Boucle commande sed
    Par sab113 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 11/11/2013, 11h23
  2. [MySQL] Probleme de boucle if avec commande sql
    Par lila13 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/05/2006, 10h17
  3. [Système] Exécution de commande et boucle infinie ?
    Par haffouff dans le forum Langage
    Réponses: 9
    Dernier message: 22/05/2006, 16h04
  4. Commande rsh dans une boucle while
    Par legapounet dans le forum Linux
    Réponses: 1
    Dernier message: 09/03/2006, 14h58

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