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

VB.NET Discussion :

propriété non évalué avec message : {Échec de l'évaluation de la propriété.}


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 74
    Par défaut propriété non évalué avec message : {Échec de l'évaluation de la propriété.}
    Salut
    j'ai la signature de la méthode suivante


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Public Function VerifierActionSuivant(ByVal sTypeDemande As String, 
     ByVal sNatureTypeDemande As String, ByVal sTraitementAVerifier As String,
    ByVal sStatutDemande As String, ByVal sTraitementSuivant As String,
    ByVal sCodeActionSuivante As String, ByVal sCodeServiceSuivant As String, ByRef LBMsg As String, ByVal sCodeCentre As String, ByVal sCodeClient As String, ByVal sOrdre As String, ByVal sLibelleCentre As String, ByVal sNomEtPrenomClient As String, ByVal sNumeroDemande As String, ByVal sLibTypDem As String, ByVal sLibService As String, ByVal sLibAction As String, ByVal sTypeClient As String, ByVal sTelephone As String, ByRef sEcranAffiche As String) As Boolean
    et voici l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    If FctGles.VerifierActionSuivant(_CodeTypDem, _NatDem, "", stDem.STATUT, sTS, sCAS, sCSS, LBMsgCloture.Text, TBCodeCentre.Text, TBCodeClient.Text, TBOrdre.Text, TBLibelleCentre.Text, TBNomEtPrenomClient.Text, TBNumeroDemande.Text, _LibTypDem, TBServiceSuivant.Text, TBActionSuivante.Text, TBTypeClient.Text, TBTelephone.Text, sEcranAffiche) = True Then
    
    end if
    à l'appel le message {Échec de l'évaluation de la propriété.} s'affiche.
    le message apparait au niveau du paramètre en rouge.

    je ne sais pas quoi faire pour résoudre le problème. Merci pour votre aide.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    On ne peut pas passer une propriété en Byref.

    Accessoirement, cela n'a aucun sens et aucune justification d'écrire une méthode avec autant de paramètres.

    EDIT : si, on peut.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    On ne peut pas passer une propriété en Byref.
    Ouais, et d'ailleurs le compilateur VB est bien nase de ne pas le signaler à la compilation

    Citation Envoyé par Bluedeep Voir le message
    Accessoirement, cela n'a aucun sens et aucune justification d'écrire une méthode avec autant de paramètres.
    Je dirais plutôt que ça a un sens, mais aucune justification... au dela de 4 paramètres il est grand temps de créer un nouveau type

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Je dirais plutôt que ça a un sens, mais aucune justification...
    Bon, si tu veux

    au dela de 4 paramètres il est grand temps de créer un nouveau type
    C'était en effet le sens de ma remarque.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Re, en fait je viens de tester, on peut passer des propriétés par référence en VB.NET... (*)

    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
    Sub Main
        Dim t As New Foo() With { .Bar = "hello" }
        Console.WriteLine(t.Bar) ' hello
        Test(t.Bar)
        Console.WriteLine(t.Bar) ' blabla
    End Sub
     
     
    Class Foo
     
        Public Property Bar As String
     
    End Class
     
    Sub Test(ByRef x As String)
        x = "blabla"
    End Sub
    Donc le problème ne vient pas de là...

    @obydissonn, est-ce que ce code s'exécute sur un thread autre que celui de l'UI ?


    (*) EDIT: en fait voilà le code IL qui correspond au Main :
    (tel qu'affiché par LinqPad)

    Code IL : 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
    IL_0000:  newobj      UserQuery+Foo..ctor
    IL_0005:  stloc.1     
    IL_0006:  ldloc.1     
    IL_0007:  ldstr       "hello"
    IL_000C:  callvirt    UserQuery+Foo.set_Bar
    IL_0011:  ldloc.1     
    IL_0012:  stloc.0     
    IL_0013:  ldloc.0     
    IL_0014:  callvirt    UserQuery+Foo.get_Bar
    IL_0019:  call        System.Console.WriteLine
    IL_001E:  ldarg.0     
    IL_001F:  ldloc.0     
    IL_0020:  stloc.1     
    IL_0021:  ldloc.1     
    IL_0022:  callvirt    UserQuery+Foo.get_Bar
    IL_0027:  stloc.2     
    IL_0028:  ldloca.s    02 
    IL_002A:  callvirt    UserQuery.Test
    IL_002F:  ldloc.1     
    IL_0030:  ldloc.2     
    IL_0031:  callvirt    UserQuery+Foo.set_Bar
    IL_0036:  ldloc.0     
    IL_0037:  callvirt    UserQuery+Foo.get_Bar
    IL_003C:  call        System.Console.WriteLine

    Donc en fait c'est juste une astuce du compilateur VB : il copie la propriété dans une variable, passe la variable par référence, appelle la méthode, et réaffecte la variable à la propriété.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Re, en fait je viens de tester, on peut passer des propriétés par référence en VB.NET.
    Ah ? j'ai donc fourni une réponse fumeuse basée sur le cas C# (où on ne peut pas le faire)

    Le code suivant par exemple ne compile pas :

    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
          public class Foo
            {
                public string Text
                {
                    get;
                    set;
                }
            }
            private static void eval(ref string text)
            {
                text = text + "X";
            }
            public static void Test()
            {
                Foo foo1 = new Foo();
                foo1.Text = "gabuzomeu";
                eval(ref foo1.Text); // => erreur de compil
            }

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Ah ? j'ai donc fourni une réponse fumeuse basée sur le cas C# (où on ne peut pas le faire)
    Oui, et c'est pour ça que j'étais de ton avis au début... J'ai donc testé pour en avoir le coeur net

Discussions similaires

  1. [AC-2007] Message propriété non trouvée
    Par brigerard dans le forum IHM
    Réponses: 5
    Dernier message: 14/09/2009, 23h14
  2. [XL-2007] message : "Argument non facultatif" avec une comboBox d'un ruban
    Par tenebres dans le forum Excel
    Réponses: 2
    Dernier message: 28/05/2009, 09h39
  3. Réponses: 5
    Dernier message: 31/12/2008, 14h56
  4. Réponses: 9
    Dernier message: 25/11/2007, 20h37
  5. Réponses: 6
    Dernier message: 20/10/2005, 21h36

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