- Exemple de la fonction ComposantInfo
Exemple de la fonction ComposantInfo L'exemple suivant permet de lister les patchs utilisés par une application.
// Création d'un tableau de patchs // permettant de stocker les informations des patchs trouvés strPatch est une Structure sNom est une chaîne nVersion est un entier FIN tabPatch est un tableau de 0 strPatch sInfoPriseEnComptePatch est une chaîne // Nom complet de l'élément qui accepte les patchs // dont on veut les informations de patch. // Cet élément peut être : // - Un exécutable WINDEV (.EXE) // - Une bibliothèque WINDEV (.WDL) // - Un composant WINDEV (.WDK) sNomCompletElementPatchable est une chaîne // Dans cet exemple, utilisation de l'exécutable "en cours" // Test si mode test ? SI EnModeTest() = Vrai ALORS // En mode test : Nom de l'exécutable qui a le nom du projet dans le répertoire EXE sNomCompletElementPatchable = fRepExe() + "\" + ProjetInfo(piNomProjet) + ".exe" SINON // En mode normal : Nom de l'exécutable sNomCompletElementPatchable = ExeInfo(exeNom) FIN // Confirmation de l'élément par sélection sNomCompletElementPatchable = fSélecteur(sNomCompletElementPatchable, ... "Sélectionnez l'élément dont vous désirez connaître " + ... "les informations de patch", ... "Exe, bibliothèque, composant WINDEV" + TAB + "*.exe;*.wd" + RC + ... "Tous fichiers (*.*)" + TAB + "*.*", "exe;*.wdl;*.wdk", fselOuvre + fselExiste) // Annulation ? SI sNomCompletElementPatchable = "" ALORS RETOUR nVersionEnComptePatch est un entier QUAND EXCEPTION DANS nVersionEnComptePatch = ComposantInfo("", ciNuméroPatch, sNomCompletElementPatchable) FAIRE Erreur("Impossible de récupérer l'information de version." + ... "S'il s'agit d'un exécutable avec une bibliothèque externe," + ... " vous devez indiquer " + ... "le nom de la bibliothèque. Détails de l'erreur : ", ExceptionInfo()) RETOUR FIN sInfoPriseEnComptePatch += [RC]+ ... ChaîneConstruit("<%1> prendra en compte les patchs qui sont " + ... "dans une version supérieure ou égal à %2.", ... fExtraitChemin(sNomCompletElementPatchable, ... fFichier + fExtension), nVersionEnComptePatch) // Liste des patchs sListePatch est une chaîne sUnPatch est une chaîne // Les patchs ont le nom de l'exécutable (ou de la bibliothèque ou composant) // avec une extension WDL et un numéro de version "externe" sListePatch = fListeFichier(fExtraitChemin(sNomCompletElementPatchable, ... fFichier + fDisque + fRépertoire) + ".WDL.*", frNonRécursif) stUnPatch est un strPatch // Parcours des fichiers de patchs trouvés POUR TOUTE CHAÎNE sUnPatch DE sListePatch SÉPARÉE PAR RC // Si ce n'est pas l'élément lui-même SI PAS sUnPatch ~= sNomCompletElementPatchable ALORS // Récupération du nom stUnPatch:sNom = fExtraitChemin(sUnPatch, fFichier + fExtension) // Récupération de la version "interne" du patch trouvé QUAND EXCEPTION DANS stUnPatch:nVersion = ComposantInfo("", ciNuméroPatch, sUnPatch) FAIRE stUnPatch:nVersion = 0 Trace("Impossible de récupérer " + ... "l'information de version du patch <" + ... sUnPatch + ">. Détails de l'erreur :", ExceptionInfo()) FIN // Ajout dans le tableau des patchs TableauAjoute(tabPatch, stUnPatch) FIN FIN sInfoPriseEnComptePatch += [RC] + ... "Voici la liste de patchs trouvés dans l'ordre de priorité" + ... " dans lequel ils sont pris en compte :" // Tri des patchs par numéro de version "interne" en ordre décroissant // car les patchs de numéro le plus important sont pris en priorité TableauTrie(tabPatch, ttMembre, "-nVersion") POUR TOUT ÉLÉMENT stUnPatch DE tabPatch // Patch pris en compte ? SI stUnPatch:nVersion >= nVersionEnComptePatch ALORS // Oui sInfoPriseEnComptePatch += [RC] + ... ChaîneConstruit("Patch <%1>, version %2", ... stUnPatch:sNom, stUnPatch:nVersion) SINON // Non sInfoPriseEnComptePatch += [RC] + ... ChaîneConstruit("Patch <%1> NON PRIS EN COMPTE" + ... ", car sa version (%2) est inférieure " + ... "à celle de l'élément WINDEV (%3)", stUnPatch:sNom, ... stUnPatch:nVersion, nVersionEnComptePatch) FIN FIN // Affichage des information trouvées Info(sInfoPriseEnComptePatch)
Documentation également disponible pour…
|
|
|
|