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 :

Problème de liaison tardive


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut Problème de liaison tardive
    Bonjour,

    Pourquoi j'ai un message d'erreur de liaison tardive dans mon code et comment régler ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                    Dim Sapi As Object = CreateObject("Sapi.spvoice")
            Sapi.speak("Bonjour")
        End Sub
    merci beaucoup de votre aide

  2. #2
    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
    Tu as essayé avec une majuscule à Speak ? Je ne suis pas sûr que ça change grand chose vu que VB n'est pas sensible à la casse, mais en l'occurrence ce n'est pas VB qui exécute cette méthode... enfin, c'est juste une idée

    Que dit l'erreur exactement ?

    EDIT: bizarre, j'ai fait le test, et pour moi ça marche bien, avec ou sans majuscule...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    j'ai essayé avec une majuscule et c'est négatif

    avec option strict off le code s'execute bien mais quand il est à on le message d'erreur suivant s'affiche

    Erreur 1 Option Strict On rejette toute liaison tardive. C:\Users\Mario\Documents\Visual Studio 2008\Projects\ordiparle\ordiparle\Form1.vb 6 9 ordiparle

  4. #4
    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
    Ah ok, je croyais que c'était une erreur à l'exécution... Effectivement avec Option Strict On ça ne passe pas.

    Tu peux toujours mettre Option Strict Off juste dans le fichier concerné, et ne rien mettre d'autre dans ce fichier... comme ça tout le reste du projet reste avec Option Strict On

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    je suis pas sur de bien comprendre ?

    Autrement dit je créer un module ou je met l'option à off et le reste reste à on?

  6. #6
    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 Mario Rousson Voir le message
    Autrement dit je créer un module ou je met l'option à off et le reste reste à on?
    Un module, une classe (éventuellement une classe partielle)...
    De toutes façons, vu que la fonctionnalité n'est pas très pratique à utiliser directement (CreateObject, pas d'intellisense...), autant l'isoler dans une classe que tu utiliseras ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Strict Off
    Public Class Speech
     
        Public Shared Sub Speak(ByVal text As String)
            Dim sapi As Object = CreateObject("SAPI.SpVoice")
            sapi.Speak(text)
        End Sub
     
    End Class
    Et dans les options du projet, tu laisses Option Strict sur On...

    Même si Option Strict On est généralement considéré comme une bonne pratique, il ne faut pas s'interdire complètement de le désactiver, sinon l'interop avec COM devient un cauchemar comme en C# avant la version 4...

    D'ailleurs je préfère l'approche de C#, où on précise au cas par cas les variables sur lesquelles on peut faire du late binding :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dynamic sapi = Activator.CreateInstance(Type.GetTypeFromProgID("SAPI.SpVoice"));
    sapi.Speak("Bonjour")

    Le fait de déclarer la variable avec le (pseudo-)type "dynamic" permet de faire du late binding dessus. Pour toutes les autres variables, c'est interdit.

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

Discussions similaires

  1. Probléme liaison tardive.
    Par CZVF_RS dans le forum C#
    Réponses: 1
    Dernier message: 29/10/2009, 10h42
  2. [débutant] Problème de liaison un à plusieurs
    Par Anthony17 dans le forum Access
    Réponses: 7
    Dernier message: 02/05/2006, 14h11
  3. [VB .NET] Databinding problème de liaison
    Par Berurier dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/04/2006, 09h16
  4. Problèmes de liaisons entre tables ...
    Par Mangun dans le forum Access
    Réponses: 2
    Dernier message: 28/09/2005, 11h35
  5. Problème avec liaison DDE
    Par Tleconte dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 18/09/2005, 19h02

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