pictogram Auteur: Patrick Biker
Date: 18 mars 2006
Maj : 21 Mars 2015

Exemples évolués

Chaque exemple montre une utilisation pratique de la fonction du WLangage.

Quand plusieurs syntaxes sont possibles, chacune est illustrée indépendamment.

Revenir à la page des exemples évolués


Le code suivant permet de se connecter à un serveur FTP et de vérifier si un fichier existe dans la liste des fichiers d'un répertoire. Ce fichier est ensuite récupéré.



// Identifiant de connexion
nIdConnexion est un entier
// Paramètres de la connexion FTP
sAdresseServeurFTP, sNomCompteFTP, sPasseFTP sont des chaînes
// Paramètres pour FTPCommande
sNomCommandeFTP est une chaîne
sNomFichierSurServeurFTP est une chaîne
sCheminFichierSurServeurFTP est une chaîne
sRéponseServeurFTP, sDonnéesDuServeurFtp sont des chaînes

// Variables pour les tests
sUnNomDeFichier est une chaîne
IndiceFichier est un entier
bFichierTrouveSurServeur est un booléen
sAdresseServeurFTP = "192.5.58.47"
sNomCompteFTP = "MonCompteFTP"
sPasseFTP = "pass"

// Connexion FTP
nIdConnexion = FTPConnecte(sAdresseServeurFTP, sNomCompteFTP, sPasseFTP)
SI nIdConnexion <> -1 ALORS
    // La connexion est Ok
    // Nom du fichier à récupérer
    sNomFichierSurServeurFTP = "Majprod.zip"
    sCheminFichierSurServeurFTP = "RepMaj"   //(chemin avec des "/" et PAS des "\")

    // spécification du répertoire dans lequel il y a le fichier à récupérer
    SI FTPRepEnCours(nIdConnexion,sCheminFichierSurServeurFTP) = Faux  ALORS
        Erreur(ChaîneConstruit("Impossible de se positionner sur "+ ...
                "le répertoire %1 sur le serveur FTP.", ...
                sCheminFichierSurServeurFTP),ErreurInfo())
    FIN
    // récupération de la liste des fichiers du répertoire courant par 
    // la fonction du W-Langage "FTPCommande" et la commande FTP "LIST"
    // Nom de la commande FTP
    sNomCommandeFTP = "LIST" //peut s'obtenir aussi avec la commande FTPListeFichier
    // Demande de la liste des fichiers du répertoire courant
   
SI FTPCommande(nIdConnexion,"LIST", ...
         sRéponseServeurFTP, sDonnéesDuServeurFtp) = Faux  ALORS
       // échec de la commande FTP
      
Erreur(ChaîneConstruit("Echec de la commande %1. "+ ...
               "Réponse du serveur FTP : %2",sNomCommandeFTP, ...
               sRéponseServeurFTP),ErreurInfo())
    SINON
       // On vérifie que le nom du fichier spécifié existe bien sur le serveur FTP
       IndiceFichier = 1
       BOUCLE
            // Un nom complet de fichier sur le serveur FTP 
            // (avec la date, l'heure et les attributs)
            sUnNomDeFichier = ExtraitChaîne(sDonnéesDuServeurFtp,IndiceFichier, RC )
            SI sUnNomDeFichier = EOT ALORS SORTIR
            // Nom du fichier seul (sans la date, ni l'heure, ni les attributs)
            sUnNomDeFichier = sUnNomDeFichier[[40 A]]
            // c'est le fichier recherché ? (sans vérification de la casse)
            SI sUnNomDeFichier ~= sNomFichierSurServeurFTP ALORS SORTIR
            IndiceFichier++
       FIN
       // Fichier trouvé ?
       SI PAS bFichierTrouveSurServeur ALORS
            //liste des fichiers du répertoire en cours sur le serveur
            Erreur(ChaîneConstruit("Le fichier %1 n'a pas été trouvé sur le serveur FTP."+ ...
                " Voici la liste des fichiers du répertoire en cours sur le serveur FTP :"+ ...
               RC +"%2",sNomFichierSurServeurFTP,sDonnéesDuServeurFtp))
       FIN
    FIN
    SI bFichierTrouveSurServeur ALORS
        // le fichier existe bien sur le serveur FTP, on le récupère
        // récupération du fichier par la fonction du W-Langage "FTPCommande" 
        // et la commande FTP "RETR"
        // Nom de la commande FTP
        sNomCommandeFTP = "RETR"   // peut s'obtenir aussi avec la commande FTPRécupère
        SI FTPCommande (nIdConnexion,sNomCommandeFTP+" "+...
            sNomFichierSurServeurFTP, sRéponseServeurFTP, sDonnéesDuServeurFtp) = Faux  ALORS
            // échec de la commande FTP
            Erreur(ChaîneConstruit("Echec de la commande %1. Réponse du serveur FTP : %2", ...
                sNomCommandeFTP,sRéponseServeurFTP),ErreurInfo())
        SINON
            // données bien récupérées, les données du fichier "sNomFichierSurServeurFTP" 
            // sont dans "sDonnéesDuServeurFtp"
            Info(ChaîneConstruit("La récupération du fichier %1 s'est bien déroulée,"+ ...
                " cliquez sur OK pour l'enregistrer sur le disque local",sNomFichierSurServeurFTP))
                //Enregistrement des données du fichier en local (dans le répertoire en cours sans chemin)
            SI fSauveTexte(sNomFichierSurServeurFTP,sDonnéesDuServeurFtp) = Faux  ALORS
                Erreur("Impossible d'enregistrer les données récupérées",ErreurInfo())
            FIN
        FIN
    FIN
    // Déconnexion
    FTPDéconnecte(nIdConnexion)
    Info("Connexion FTP terminé")
SINON
    Erreur("La connexion au serveur FTP a échoué", ErreurInfo())
FIN