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 :

Question un peux tordue


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut Question un peux tordue
    Salut a tous je vous soumet ma question car elle est un peux tordue, je ne sais vraiment pas si c'est réalisable en fait.....

    voila je code un programme en VB 2005 (jusque là tout va bien), qui doit effectuer des actions en fonction de ce qu'un utilisateur rentre dans un textbox

    voici ce que je doit faire

    si l'utilisateur à tappé "help" alors je doit lui mettre un msgbox("vous avez demandé de l'aide")
    si l'utilisateur à tappé "coucou" alors je doit change un label.caption en "bonjour Mr...."

    etc....


    voila le problème c'est que la liste des Mots clés/Action n'est pas fixe et quelle doit pouvoir évoluée dans le temps, et les actions asso aux mot clés peuvent elle aussi changé dans le tps....

    j'ai donc crée une base de donnée avec une table ACTIONS avec 2 Champs: MOTCLE et REALISERACTION
    voici une vue de ma base
    ---------------------------
    |MOTCLE|REALISERACTION|
    ---------------------------
    | help | msgbox("aide") |
    ---------------------------
    | coucou| label1.cation="bonjour" |
    ---------------------------

    j'aimerais pouvoir faire une fonction ou une procédure qui m'execute les actions de la colone REALISERACTION

    voila ce que j'aimerais créer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    strSQL = "SELECT  REALISERACTION FROM ACTIONS WHERE MOTCLE=" & Chr(34) & Message.Text & Chr(34)
    rs = cn.Execute(strSQL)
     
    EXECUTION (rs("REALISERACTION ").Value)
    voila ce que j'arrive pas a coder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function EXECUTION (param)
    ...................
    end function

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Bonjour,
    A mon avis, tu as 2 solutions, la simple et la moins simple ,
    la simple :
    tu fais un select case(param) et en fonction du param tu exécutes la méthode adhoc,
    la seconde :
    tu pars du pattern strategie, qui permet d'obtenir des classes d'exécution,
    tu crées une ressource dll, qui contient les classes de pattern stratégie (ou une classe est un comportement) et tu charges dynamiquement (System.Reflection) l'assembly dans l'application principale,
    Et tu invoque dynamiquement les appels d'instanciation de classes qui respectent l'interface définie par ton pattern stratégie...
    Là, cette solution est super dynamique, car tu places dans champs REALISERACTION que le nom de la classe à instancier dynamiquement...
    (Je vais évidament pas le donner le code...) mais la seconde piste me semble intéressante dans ton cas...

    voilou
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    Merci beaucoup pour votre réponse qui m'a permis d'avancer...


    voila j'ai crée une DLL simple et mechante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Class FB_Actions
            Public Sub recup(ByVal var As String)
               msgbox(var)
            End Sub
    End Class
    j'aimerais faire appel dynamiquement a cette DLL par refexion

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       Dim Ass As [Assembly] = Ass.LoadFrom("MA_DLL.dll")
            Dim o As Object = Ass.CreateInstance("FB_Actions")
            Dim t As Type = o.GetType()
            Dim args(0) As Object
            Dim b As BindingFlags
            b = BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.InvokeMethod
            args(0) = "Hello"
            t.InvokeMember("recup", b, Nothing, o, args)
    lorsque j'execute mon code j'ai une erreure a cette ligne:
    Dim t As Type = o.GetType()
    "La référence d'objet n'est pas définie à une instance d'un objet." avez vous une idée ???

    merci d'avance

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    autant pour moi je viens de trouver la solution ... j'avais une erreur dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim o As Object = Ass.CreateInstance("FB_Actions")
    j'aurais du mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim o As Object = Ass.CreateInstance("actions.FB_Actions")
    voila si ca peux servir a quelqu'un....

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

Discussions similaires

  1. comment je peux répondre à ces questions ?
    Par Invité dans le forum Entretien
    Réponses: 4
    Dernier message: 01/02/2012, 13h20
  2. lisez bien la question avant de répondre cas tordu :)
    Par frp31 dans le forum Administration système
    Réponses: 3
    Dernier message: 15/12/2011, 11h13
  3. [Langage/Algorithme] Question un peu tordue
    Par nazgul66 dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/04/2011, 16h49
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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