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

Web & réseau Delphi Discussion :

Probleme idFTP apres un get


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Par défaut Probleme idFTP apres un get
    Bonjour à tous,

    J'ai intégré a une application un client FTP qui me permet de récupérer des fichiers. Le problème est qu'une fois le fichier sur ma machine je n'arrive pas à l'ouvrir (depuis la même application), j'ai le message :
    "Le processus ne peut accéder au fichier car ce fichier est utilisé par un autre processus'. Processus Monprog.exe"

    voici globalement ce que je fait :
    Je me connecte au serveur FTP
    je change de répertoire
    je recupere mon fichier (avec idFTP.get)

    sur l’événement idFTP.onWorkEnd
    je me déconnecte
    je lance ma procédure qui ouvre mon fichier (enfin charge le fichier dans un TStringList : MaStringList.LoadFromFile(monfichier.txt)

    Si je lance la procédure qui ouvre le fichier après relance du programme ça fonctionne !!

    Est-ce le idFTP.get qui ne libère par le fichier comme il faut ?

    j'ai essayer de charger mon fichier après une tempo: même symptôme

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par el_coyote Voir le message
    J'ai intégré a une application un client FTP qui me permet de récupérer des fichiers. Le problème est qu'une fois le fichier sur ma machine je n'arrive pas à l'ouvrir (depuis la même application), j'ai le message :
    "Le processus ne peut accéder au fichier car ce fichier est utilisé par un autre processus'. Processus Monprog.exe"
    Vous utilisez la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TIdFTP.Get(const ASourceFile, ADestFile: string; const ACanOverwrite: Boolean = False; AResume: Boolean = False);
    Le verrou sur le fichier n'est libéré qu'après la sortie de la méthode gérant l'événement OnWorkEnd. En gardant cette commande, il faut pour maintenir un traitement automatique utiliser un timer qui sera activé dans la méthode de gestion OnWorkEnd. Le traitement de l'événement OnTimer sera de charger le fichier et aussi de désactiver le timer.

    Ce n'est pas des plus élégants , aussi il est préférable d'utiliser la surcharge de la commande Get suivante qui utilise un stream pour réceptionner les données :
    procedure TIdFTP.Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = False);.

    Par exemple, on peut initialiser un TFileStream que l'on passera à la commande Get. Sur l'événement OnWorkEnd, on libèrera le stream et on chargera le fichier.

  3. #3
    Membre averti
    Homme Profil pro
    Automatisme et Informatique Industrielle
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Automatisme et Informatique Industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Par défaut
    Bonjour,

    Oups je viens de voir que j'ai oublié de répondre. Donc merci pour la réponse, j'ai utilisé la méthode bourrin: le timer. Par contre je n'appelais pas directement ma fonction dans le OnWorkEnd, je déclenchais un autre événement dans le OnWorkEnd et dans la réception de l’événement j'appelais ma fonction. j'ai tout remplacé par le timer et ça fonctionne.

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

Discussions similaires

  1. probleme classe apres ajout de variable
    Par croc14 dans le forum Visual C++
    Réponses: 6
    Dernier message: 11/08/2006, 21h03
  2. Réponses: 13
    Dernier message: 20/03/2006, 16h26
  3. Réponses: 6
    Dernier message: 09/02/2006, 12h33
  4. Problème reboot après install sous Debian
    Par getupa dans le forum Administration système
    Réponses: 8
    Dernier message: 27/01/2006, 16h19
  5. Problème X après compilation noyau 2.6.13.2
    Par nicodeme dans le forum Applications et environnements graphiques
    Réponses: 9
    Dernier message: 08/10/2005, 14h41

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