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

Composants VCL Delphi Discussion :

Indy IdFTP comment ne pas bloquer l'application lors de l'upload?


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Profil pro
    Lycéen
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Indy IdFTP comment ne pas bloquer l'application lors de l'upload?
    Bonjour,

    Je crée actuellement une application contenant une procédure (fabriquée par mes soins ) permettant de transférer tout un dossier ainsi que ses fichiers et ses sous-répertoires sur un serveur. J'utilise pour cela le composant indy IdFTP. Jusqu'à là tout va bien.

    Je compte au départ le nombre de fichiers à télécharger sur le serveur pour déterminer la propriété "max" d'un progressbar et je rajoute un à sa position chaque fois qu'un fichier eut été copié.

    Malheureusement pour moi, lors de l'utilisation de la procédure IdFTP1.Put(mes paramètres), mon application est bloquée durant le temps du transfert J'aimerais pouvoir continuer d'utiliser mon application pendant le transfert. Est-ce possible ? Et si oui, comment ?

    Cordialement,

    PLO435

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 569
    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 569
    Points : 25 190
    Points
    25 190
    Par défaut
    Mets le code de l'Upload dans un Thread, avec un Synchronize dans la Boucle qui appele Put, tu mettras à jour le ProgressBar

  3. #3
    Candidat au Club
    Profil pro
    Lycéen
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Mets le code de l'Upload dans un Thread, avec un Synchronize dans la Boucle qui appele Put, tu mettras à jour le ProgressBar
    En fait ce n'est pas le progressbar qui me pose problème.

    Ce que j'aimerais faire c'est avoir un bouton "annuler" qui, une fois clické, changerait une variable boolean à false. Ainsi, ma procédure qui télécharge plusieurs fichiers sur le serveur, ira vérifier la variable avant de copier le fichier suivant pour savoir s'il faut continuer le transfert.

    Et c'est là où réside le problème. Quand le téléchargement est en cours, je ne peux pas clicker sur mon boutton comme sil était enabled à false;

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    TIdAntiFreeze tu met sur ta form.

    indy dans un thread serai plus efficace! Et si tu veux pas de thread ICS est non bloquant et plus adapté à ce type d'utilisation.

  5. #5
    Candidat au Club
    Profil pro
    Lycéen
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    TIdAntiFreeze tu met sur ta form.

    indy dans un thread serai plus efficace! Et si tu veux pas de thread ICS est non bloquant et plus adapté à ce type d'utilisation.
    J'ai donc mis un TIdAntiFreeeze sur ma form, cependant le problème persiste ; je ne peux toujours pas clicker sur quelque boutton.

    Qu'est ce qu'ICS ? Est-ce intégré à Delphi ?

    Je ne comprend pas bien non plus le système du thread. Est-ce pour lancer en parallèle une "mini-application" permettant de s'occuper du transfert ? Si c'est cela comment procède-t-on ?

    Merci déjà de votre aide

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 569
    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 569
    Points : 25 190
    Points
    25 190
    Par défaut
    Tu pourrais regarder l'aide !

    Objet TThread pour utiliser un processus léger parallèle à au processus principal de ton application !

    On veut bien aider mais faut faire un effort !

    Voici un idée générale du code à obtenir

    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
    type
      TUploader = class(Thread)
      private
         FFileName: string;
      public
         procedure Upload(const AFileName: TFileName);
     
         procedure Execute(); override;
      end;
     
    ...
     
    procedure TUploader.Upload(const AFileName: TFileName);
    begin
      FreeOnTerminate := True;
      FFileName := AFileName;
     
      Resume();
    end;
     
     
    procedure TUploader.Execute(); 
    begin
      With TFTP.Create(nil) do
      try
        Put(FFileName);
      finally
        Free();
      end;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      TUploader.Create(True).Upload(MonFichier);

  7. #7
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    TIdAntiFreeeze tu l'active avant le transfert et stop après ?
    ICS http://www.overbyte.be/frame_index.h...ducts/ics.html
    mais le thread c'est mieux

  8. #8
    Candidat au Club
    Profil pro
    Lycéen
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    ok merci beaucoup pour tout

    Cordialement,

    PLO435

Discussions similaires

  1. Réponses: 53
    Dernier message: 05/06/2014, 19h42
  2. Comment ne pas bloquer un tOracleConnection en cas d'erreur
    Par minisys dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 29/04/2011, 17h25
  3. [XL-97] UserForm : comment ne pas bloquer le code appelant?
    Par Penegal dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 17/04/2009, 15h35
  4. [API]Comment ne pas bloquer la fenêtre principal...
    Par X-K4l1 dans le forum Windows
    Réponses: 1
    Dernier message: 16/08/2005, 14h10
  5. Réponses: 5
    Dernier message: 02/08/2004, 17h11

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