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 :

copie de fichier qui bloque le programme


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 44
    Points
    44
    Par défaut copie de fichier qui bloque le programme
    bonsoir tout le monde

    Je viens vers vous pour vous poser une question sur la copie de fichiers : j'utilise la commande COPYFILE mais chaque fois que je copie une fichier de plusieurs méga, le petit rond bleue de windows apparaît et le programme, bien que copiant le fichier, n'est pas "actif". En effet, lorsque je veux indiquer le nom du fichier qui est en train d'être copié, rien ne s'affiche ( même si je force l'affichage avec un Refresh, ou Update ... ). Existe-t-il une autre commande plus souple pour copier des fichiers autre que COPYFILE ?

    Je vous remercie par avance de votre réponse et vous souhaite une agréable soirée

    Laurent CUSSAC

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Bonjour

    il y a CopyFileEx http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
    ou créer çà propre routine de copie de fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Points : 87
    Points
    87
    Par défaut
    Bonjour, j'utilise ce composant de Michel Burdin, il permet la copie, la suppression...de fichiers...
    http://michel.burdin.online.fr/

    il est bien, il faut l'installer avant dans Delphi.

    Pascal 07

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    unit c_Shfileop;
    {Component based on the ShFileOperation API function
     Michel BURDIN - 1997}
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ShellApi;
     
    type
       TShFlags = (shAllowUndo, shFilesOnly, shNoConfirmation, shNoConfirmMkDir,
    			 shRenameOnCollision, shSilent, shSimpleProgress);
       TShFlag = Set of TShFlags;
       TShOp = (shCopy, shDelete, shMove, shRename);
       TShFileOP = class(TComponent)
       private
         fHParent: THandle;
         fOperation: TShOp;
         fTo: AnsiString;
         fFlags: TShFlag;
         fFromList: TStringList;
         fAborted: boolean;
         fTitle: AnsiString;
         fKeepFilesList: boolean;
       protected
       public
         constructor Create(aOwner: TComponent); override;
         destructor Destroy; override;
         function Execute: boolean;
         property Aborted: boolean read fAborted;
       published
         property Operation: TShOp read fOperation write fOperation default shCopy;
         property FilesList: TStringList read fFromList write fFromList;
         property Destination: AnsiString read fTo write fTo;
         property Title: AnsiString read fTitle write fTitle;
         property Options: TShFlag read fFlags write fFlags default [shAllowUndo];
         property KeepFilesList: boolean read fKeepFilesList write fKeepFilesList
         default False;
       end;
     
    procedure Register;
     
    implementation
     
    const
     
    {+NT} ct_Shfileop_1 = 'PARF';
    {+NT} vide = '';  
     
    constructor TShFileOp.Create(aOwner: TComponent);
    begin
      inherited Create(aOwner);
      if (aOwner is TWinControl) then fHParent := TWinControl(aOwner).Handle
      else fHParent := 0;
      fOperation := shCopy;
      fTo := vide;
      fFlags := [shAllowUndo];
      fFromList := TStringList.Create;
      fAborted := False;
      fTitle := vide;
      fKeepFilesList := False;
    end;
    destructor TShFileOp.Destroy;
    begin
      fFromList.Free;
      inherited Destroy;
    end;
     
    function TShFileOp.Execute: boolean;
    var TmpBuf: AnsiString;
        shFO: TSHFileOpStruct;
        i: Integer;
    begin
      Result := True;
      TmpBuf := vide;
      if fFromList.Count > 0 then
      for i := 0 to fFromList.Count-1 do
    {+NT}   if fFromList[i] <> vide then TmpBuf := TmpBuf + fFromList[i] + ';';
      for i := 1 to Length(TmpBuf) do
    {+NT}   if TmpBuf[i] = ';' then TmpBuf[i] := #0;
      shFO.Wnd := fHParent;
      case fOperation of
        shCopy:  shFO.wFunc := FO_COPY;
        shDelete: shFo.wFunc := FO_DELETE;
        shMove: shFo.wFunc := FO_MOVE;
        shRename: shFo.wFunc := FO_RENAME;
      end;
      shFO.pFrom := PAnsiChar(TmpBuf);
      shFO.pTo := PAnsiChar(fTo);
      shFO.fFlags := 0;
      if shAllowUndo in fFlags then shFO.fFlags := shFO.fFlags or FOF_ALLOWUNDO;
      if shFilesOnly in fFlags then shFO.fFlags := shFO.fFlags or FOF_FILESONLY;
      if shNoConfirmation in fFlags then shFO.fFlags := shFO.fFlags or FOF_NOCONFIRMATION;
      if shNoConfirmMkDir in fFlags then shFO.fFlags := shFO.fFlags or FOF_NOCONFIRMMKDIR;
      if shRenameOnCollision in fFlags then shFO.fFlags := shFO.fFlags or FOF_RENAMEONCOLLISION;
      if shSilent in fFlags then shFO.fFlags := shFO.fFlags or FOF_SILENT;
      if shSimpleProgress in fFlags then shFO.fFlags := shFO.fFlags or FOF_SIMPLEPROGRESS;
      ShFO.fAnyOperationsAborted := False;
      ShFO.hNameMappings := nil;
      shFO.lpszProgressTitle := pAnsiChar(fTitle);
      Result := (ShFileOperation(shFO) = 0);
      fAborted := ShFO.fAnyOperationsAborted;
      if not fKeepFilesList then fFromList.Clear;
    end;
     
    procedure Register;
    begin
      RegisterComponents(ct_Shfileop_1, [TShFileOp]); {PARF}
    end;
     
    end.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    Bonsoir

    Merci pour vos réponses : j'avais déjà essayé CopyFileEx mais sans succès également :-)

    Quand à la méthode de Michel Burdin, cela ne donne rien également.

    Du coup, je crois que je vais faire ma propre routine de copie, en espérant qu'elle fonctionnera !

    Bonne soirée à vous tous et encore merci pour vos réponses

    Laurent

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

Discussions similaires

  1. probleme de recv qui bloque mon programme
    Par ing2009 dans le forum Réseau
    Réponses: 0
    Dernier message: 06/05/2009, 16h23
  2. Réponses: 10
    Dernier message: 30/04/2007, 17h25
  3. Erreur qui bloque mon programme
    Par bugland dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2006, 22h32
  4. class qui copie un fichier vers un dossier...
    Par dimitrimm972 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 06/04/2006, 22h21
  5. Programme de copie de fichier en réseau
    Par Empty_body dans le forum Langage
    Réponses: 5
    Dernier message: 12/09/2005, 17h26

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