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.NET Discussion :

comment marche une fonction


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut comment marche une fonction
    Bonjour

    Je suis une bille en C#, j'ai essayé de comprendre en suivant des indications de tuto et de cours, mais çà rentre pas. L'ennui c'est que je suis maintenant un peu pris par le temps et je dois comprendre vite pour rendre mon résultat.

    Voici le code que j'ai :
    Dans une page ASCX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <td valign="top" height="100" class="UserBox">
    <%# FormatUserBox() %>
    </td>
    Dans la page ASCX.CS qui lui est attachée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    protected string FormatUserBox()
    System.Text.StringBuilder userboxOutput = new System.Text.StringBuilder( 1000 );
    userboxOutput.AppendFormat( "{0}: {1}<br />", ForumPage.GetText( "joined" ), ForumPage.FormatDateShort( ( DateTime ) DataRow ["Joined"] ) );
    Ceci affiche la phrase suivante :
    Inscrit le: 13/12/2006
    De ce que j'ai compris :
    - {0} va chercher une locution dans un fichier XML (le forum est trduit en plein de langue)
    - {1} va chercher la date qui se trouve dans la base de donnée

    Ce que je ne comprend pas :
    Comment je trouve le morceau de code qui fait çà ?
    Pourquoi, lrosque je rajoute un truc entre le deux il n'apparait pas ?

    Merci pour votre aide, je suis perdu.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    je dirais que le
    {0} apelle:
    et {1} apelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ForumPage.FormatDateShort
    c'est donc dans ces deux fonctions que tu verra comment sont recuperé ton text et ta date

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide, çà m'avance, mais juste un peu.
    J'ai essayé de trouver où se trouvait ces fonctions, mais je trouve pas.
    En faisant un clic droit et "Atteindre la définition" j'arrive sur la définition de propriété, mais pas la fonction.

    Mais au surplus, cela ne m'explique pas pourquoi, lorsque je rajoute un truc entre les deux, çà me l'affiche pas.

    Merci pour ton aide

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Comment ca quand tu rajoute un truc entre les deux?

    Ou l'instance de ForumPage est elle cree?

    Va dans le fichier quui definit la classe de ForumPage
    et cherche la methode qui correspond a GetText

    a moins que ca soit dans un DLL

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ben quand je rajoute un truc dans ce genre là

    Ben il m'affiche pas TRUC

    Pour l'instance de ForumPage, je sais pas trop, c'est jsutemetn un des souci que j'ai.

    Ensuite, pour la DLL, j'ai les sources sous la main, mais visiblement lorsque je compile, ma DLL (dans le répertoir /bin) ne change pas de date, je suis assez perplexe là dessus.

    Mais mon souci c'est que je n'arrive pas à remonter le définition des fonction. Lorsque je cherche GetText dans un fichier qui s'appelle ForumPage.cs (j'en déduis que c'est la classe) je trouve çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string GetText( string text )
    {
    	return GetText( TransPage, text );
    }
    Juste au dessus il y a çà
    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
     
    /// <summary>
    /// What section of the xml is used to translate this page
    /// </summary>
    public string TransPage
    {
    	get
    	{
    		if ( m_transPage != null )
    			return m_transPage;
    			throw new ApplicationException( string.Format( "Missing TransPage property for {0}", GetType() ) );
    	}
    	set
    	{
    		m_transPage = value;
    	}
    }
    Perso, je suis plus habitué au VB.NET, donc, lorsque je vois ce genre de code, je suis complètement paumé.
    Et en voyant çà, je comprend toujours pas comment il fva chercher les éléments qu'il vuet (l'un dans la BDD, l'autre dans un fichier XML) et non plus pourquoi il ne prend pas en compte mes modifs.

    Est ce qu'avec çà, tu penses y voir plus clair que moi ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    voyons voir
    deja ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public string GetText( string text )
    {
    	return GetText( TransPage, text );
    }
    apparement ca serait une surcharge tu n'as pas un autre fonction GetText?
    Ta classe herite pas d'une autre classe?

    Transpage c'est juste une property.

    pour
    La par contre je n'utilise jamais les format string donc je sais pas trop mais si les deux points s'affiche TRUC est obligé de s'afficher.
    Ou sinon c'est que tu change pas les bon fichiers sources

  7. #7
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Pour la compilation, je vais voir, je crois que çà doit merdouiller dans les options de mon Visaul Studio

    Pour l'héritage, ben je sèche.
    En haut de mon fichier ForumPage.CS y a çà :
    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
     
    using System;
    using System.IO;
    using System.Text;
    using System.Collections;
    using System.Data;
    using System.Xml;
    using System.Web;
    using System.Threading;
    using System.Globalization;
    using yaf.classes;
     
    namespace yaf.pages
    {
    	/// <summary>
    	/// Summary description for BasePage.
    	/// </summary>
    	public class ForumPage : System.Web.UI.UserControl
    Comme je l'ai dit, je suis plus habitué au VB. LAors je pense que "using" c'est "Imports" en VB
    Mais pour la dernière ligne "public...." je sèche. Est ce que çà correspond bien à "Inherits" ?

    Ensuite, une autre fonction getText j'ai trouvé çà :
    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
    public string GetText( string page, string text )
    {
    	LoadTranslation();
    	string str = m_localizer.GetText( page, text );
    	// If not default language, try to use that instead
    	if ( str == null && m_defaultLocale != null )
    	{
    		str = m_defaultLocale.GetText( page, text );
    		if ( str != null ) str = '[' + str + ']';
    	}
    	if ( str == null )
    	{
    #if !DEBUG
    		string filename = null;
    			if(m_pageinfo==null || m_pageinfo.IsNull("LanguageFile") || !BoardSettings.AllowUserLanguage)
    			filename = BoardSettings.Language;
    		else
    			filename = (string)m_pageinfo["LanguageFile"];
    			if(filename==null)
    			filename = "english.xml";
    			HttpContext.Current.Cache.Remove("Localizer." + filename);
    #endif
    		DB.eventlog_create( PageUserID, page.ToLower() + ".ascx", String.Format( "Missing Translation For {1}.{0}", text.ToUpper(), page.ToUpper() ), EventLogTypes.Error );
    		return String.Format( "[{1}.{0}]", text.ToUpper(), page.ToUpper() ); ;
    	}
    	str = str.Replace( "", "<b>" );
    	str = str.Replace( "", "</b>" );
    	return str;
    }
    Mais là, j'ai beau faire des efforts pour comprendre, je capte rien de ce que çà fait. Mais apr contre je pense pas que çà soit utilisé, puisque çà attend deux paramettre alors que mon code de base n'en prend qu'un.

    Et j'ai rien d'autre qui s'appelle comme çà, juste des appels à çà dans la page, et même un gros paquet.

    Si çà te dis quelque chose.

    MErci pour ton aide

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    je te repond vite fais avant que je parte je regarderais plus attentivement chez moi.
    c'est normal qu'elle prenne deux params.

    la fonction de "base" que tu apelle Dans le formatage apeel une fonction qui a son tour apelle une fonction a deux parametres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string GetText( string text ) {  return GetText( TransPage, text ); }
    donc tu te retrouve dans cette fonction

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    pour le inherit je pourrias pas t'aider je connais pas du tout VB
    sinon public est un modificateur d'acces
    il permet de specifier kelle méthode pourrait etre appelle sur l' objet.
    plus d'info:
    http://msdn2.microsoft.com/fr-fr/lib...ae(VS.80).aspx

    Je vais commente un peu le code
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    public string GetText( string page, string text )
    {
            //apelle de la fonction LoadTranslation
    	LoadTranslation();
            //apelle de la fonction GetText dans la classe correspondante a l'objet m_localizer
           //retourne une string
    	string str = m_localizer.GetText( page, text );
    	// If not default language, try to use that instead
            //condition qui regarde si les variables m_defaultLocale et str  sont null
    	if ( str == null && m_defaultLocale != null )
    	{
                    // meme que au dessus sauf que l'a l'apelle a GetTexT ce fait sur un autre objet :m_defaultLocale
    		str = m_defaultLocale.GetText( page, text );
                    //si la string renvoye precedement n'est pas null alors on ajoute le caracter '[' au debut et le caratere ']' a la fin 
                    //l'operateur + dans ce cas sert a concatener
    		if ( str != null ) str = '[' + str + ']';
    	}
            // la comme d'habitude on regarde si str est null
    	if ( str == null )
    	{
    //directive conditionnel.
    //regarde si le code est execute en release si ca n'est pas le cas le code juqu'au #ENDIF ne sera pas execute
    //si ca n'est pas le cas le code dans ce bloc
    #if !DEBUG
    		string filename = null;
    			if(m_pageinfo==null || m_pageinfo.IsNull("LanguageFile") || !BoardSettings.AllowUserLanguage)
    			filename = BoardSettings.Language;
    		else
    			filename = (string)m_pageinfo["LanguageFile"];
    			if(filename==null)
    			filename = "english.xml";
    			HttpContext.Current.Cache.Remove("Localizer." + filename);
    #endif
                     //apelle de la fonction eventlog_create
                     // Je pense que ca doit cree un journal d'evenemnt en base
    		DB.eventlog_create( PageUserID, page.ToLower() + ".ascx", String.Format( "Missing Translation For {1}.{0}", text.ToUpper(), page.ToUpper() ), EventLogTypes.Error );
    		return String.Format( "[{1}.{0}]", text.ToUpper(), page.ToUpper() ); ;
    	}
            //remplace "<b>" par rien donc enleve ce dernier
    	str = str.Replace( "", "<b>" );
           // pareil que au dessus sauf que c'est pour la balise "</b>"
    	str = str.Replace( "", "</b>" );
           // retourne a l'appellant la string cree.
    	return str;
    }
    J'ai commente vite fais le code j'ai du commenter des trucs que tu savait deja mais dans le doute.
    Dis moi si tu as a peu pres compris
    voilou

  10. #10
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour tes commentaires.

    Je comprends un peu mieux différents points de la fonction, mais je ne vois toujours pas comment elle fait pour aller chercher les bons paramettres.
    Je vais creuser dans le code pour aller voir ce que font les fonctions que tu me signale, maintenant que je sais que ce ne sont pas des mot du langage.

    Je te tiens au courant, surtout lorsque j'aurais compris pourquoi j'ai des soucis à la compilation (le coup du TRUC qui n'apparait pas)

    Encore merci et @+

Discussions similaires

  1. [VB.Net] Comment implémenter une fonction BitWise ?
    Par graphicsxp dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/04/2005, 15h52
  2. Réponses: 8
    Dernier message: 20/12/2004, 15h14
  3. Comment lancer une fonction
    Par Elois dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 21/04/2004, 19h10
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

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