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

ASP Discussion :

inclusion conditionnelle de fichier definissant un fonction


Sujet :

ASP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut inclusion conditionnelle de fichier definissant un fonction
    Bonjour,

    Je voudrais pouvoir include un fichier de façon conditionnelle, dans le FAQ il est conseillé dans ce cas d'inclure le fichier de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <% if condition then %>
      <!--#include file="monfichier1.asp"-->
    <% else %>
    <!--#include file="monfichier2.asp"-->
    <% end if %>
    Mais si je comprend bien avec cette technique, le parseur va inclure a la fois monfichier1.asp et monfichier2.asp et executera ensuite le code en fonction de condition. C'est la que se pose mon probleme , mes 2 fichiers définissent la meme fonction mais avec des variantes de l'un à l'autre. Du coup le fait qu'ils soient tous les 2 parsés entraine que la fonction définie dans monfichier2.asp écrase automatiquement celle définie dans monfichier1.asp.
    Mais il faut absolument que je puisse définir une fonction un peu différente selon ma condition. Savez vous si il existe un moyen via l'include de fichier, ou sinon puis je contourner le probleme ?

    Merci

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Il faudrait un peu plus de détail sur les conditions.

    Juste une idée : Tu ne peux pas faire un include d'un seul fichier et tester ta condition dans ce fichier include ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut
    Merci pour ta réponse

    En fait ma condition c'est une variable de session boléenne qui définie si le flux retourné est de l'HTML ou du XML. En gros ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Session("fluxXML") Then
    Qu'entends tu par l'include d'un seul fichier, tu veux dire que je fais l'inclusion du même fichier c'est à dire de celui qui définit la fonction , mais par contre dans ce fichier je teste ma condition pour faire les modifications de ma fonction selon la condition ? Je ne sais pas si je peux faire ca en fait, je souhaitais ne pas avoir a modifier les fichiers qui definissent ma fonction. Pour être plus clair cette fonction affiche de l'HTML ou du XML, mais l'affichage apparait a plein d'endroit dans la fonction, du coup a chaque fois que j'ai un response.write je vais devoir tester ma condition pour verifier si je veux afficher de l'HTML ou de l'XML, ca va me faire rajouter 30 tests de conditions dans la même fonction pour tester la même condition, c'est pour ca qu'a l'époque j'avais eu recours a un 2e fichier de fonction un peu différent du premier.

    J'ai peut être une solution intermédiaire, mais je ne la trouve pas terrible car ca me fait encore rajouter un fichier ; je crée un 3e fichier, identique au 2e dans lequel je nomme ma fonction de facon différente ; et je teste ma condition non pas au moment de la définission de la fonction , mais au moment de son appel. Ca devrait fonctionner, seul ennui c'est que je crée encore un nouveau fichier

    Edit : Mauvais plan, je viens de verifier le code de ma page, ca reviendrait exactement au même que d'effectuer mon test de condition dans ma fonction elle meme, car la fonction est appelée au moins 15 fois dans ma page, ca me fait rajouter 15 tests de condition dans la meme page , c 'est carrement bourrin Est ce qu'il est possible en VBSCRIPT de redefinir une fonction a partir d'une autre (en gros ce qui reviendrait a renommer une fonction)

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut
    Merci pour ta réponse

    Je viens de tester mais j'obtiens une erreur avec cette fonction : j'obtiens le message 'type incompatible' au moment de l'appel de ma fonction. J'avais eu le meme probleme ce matin avec la solution proposée dans la FAQ de developpez.com.

    Je voudrais essayer de renommer ma fonction (je pars du principe que je definie 2 fonctions avec un nom différent et que selon de ma condition je renomme si necessaire la fonction, car la fonction qui est appelée a toujours le meme nom). Seule probleme c'est que je n'ai aucune idée de comment on redéfinie une fonction en VBScript, j'ai fait des recherches et j'ai trouvé le code suivant en JScript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@ language=jscript %><html><body>
    <%
    function printHello() {
       Response.Write("Hello!<BR>\n");
    }
    function printBye() {
       Response.Write("Bye!<BR>\n");
    }
    printHello = printBye;
    printHello(); // Prints Bye!
    %>
    </body></html>
    Mais ca ne fonctionne pas si je le convertie en VBScript

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Quelque soit le langage, une fonction est sensée renvoyer une valeur. Sinon, utilises une procedure.
    En VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Function bye(param)
          TRAITEMENT
          bye = RESULTAT DU TRAITEMENT
    End function
     
    response.write bye(value)
    Comme dit PC75, pourquoi ne fais-tu pas un include avec tes deux fonctions. Suivant le résultat de ton test tu fais appel à l'une ou à l'autre.

    A+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Points : 133
    Points
    133
    Par défaut
    Merci pour ta réponse !
    En fait le probleme de l'include des fonctions, c'est que les 2 fonctions portent le meme nom, la 2e déclarée ecrase donc a chaque fois la premiere ; du coup mon idée etait d'en avoir une avec un nom différent et en fonction du résultat de mon test appeler la bonne fonction. C'est pour cette raison qu je voulais pouvoir renommer ma fonction car en fait la fonction est appelée une 15 aine de fois dans la page, je me vois pas faire le test a chaque appel de la fonction 15 fois dans la page. Ca me semble plus simple d'utiliser 15 fois le meme nom de fonction mais de renommer la fonction selon le résultat de mon test.
    J'ai finalement changé la technique, j'ai fait 2 pages séparées pour les sorties XML et HTML, il y avait d'autre parametre en plus a prendre en compte dans la page et au final le code devenait n'importe quoi et était illisible, du coup j'ai finalement fait 2 pages, c'est lourd d'avoir 2 pages qui executent à peu pres la même chose mais parfois ca reste la meilleure solution si on veut pouvoir maintenir le code ensuite.

    Merci de votre aide !

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

Discussions similaires

  1. Inclusion/exclusion de fichiers/répertoires
    Par GLDavid dans le forum Linux
    Réponses: 17
    Dernier message: 10/11/2005, 16h17
  2. Réponses: 20
    Dernier message: 25/09/2005, 15h07
  3. Fichier Batch et fonction Choice : Un alternatif ???
    Par BilTCD dans le forum Windows
    Réponses: 43
    Dernier message: 31/08/2005, 19h18
  4. Ecriture dans un fichier avec la fonction AWK
    Par tux2005 dans le forum Linux
    Réponses: 2
    Dernier message: 21/07/2005, 10h58
  5. [Ressources] Nombre de ressources incluses dans un fichier
    Par Clorish dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 03/06/2005, 15h27

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