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 :

Créer des exécutables et les lier [Débutant]


Sujet :

VB.NET

  1. #41
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Vraiment c'est un générateur de variable qu'il me faut et ensuite il faut que je puissent déclarer objets en public avec la variable que je viens de générer sachant que chaque variable doit être unique.

  2. #42
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    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
        Public Sub AjoutAlarme(ByVal idAlarm As Integer, ByVal unit As String, ByVal moduleparam As String, ByVal description As String, ByVal niveaualarm As String, ByVal message As String, ByVal priority As String, ByVal seuil As String) _
        Implements IAlarmes.AjoutAlarme
            Dim x As String = "Alarm" & idAlarm
            Public x As Alarme = New Alarme
            x.IdAlarm = idAlarm
            x.Unit = unit
            x.ModuleParam = moduleparam
            x.Description = description
            x.NiveauAlarm = niveaualarm
            x.Message = message
            x.Priority = priority
            x.Seuil = seuil
            DicoAlarm.Add(x.IdAlarm, moduleparam)
            DicoAlarm2.Add(x.ModuleParam, moduleparam)
            i0 = i0 + 1
        End Sub
    Voila j'ai pensé à un truc dans ce genre sachant que "x" est une concaténation entre un String "Alarm" et le numéros de l'alarme qu'on souhaite ajouter qui est unique. Alors le probleme est qu'il aime pas la déclaration public dans une procédure ^^
    Déjà, dans ce bout de code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dans  Dim x As String = "Alarm" & idAlarm
        Public x As Alarme = New Alarme
    tu as une erreur La variable locale 'x' est déjà déclarée dans le bloc actuel. Normal tu déclare 2 foix x (avec des types différents)

    Par rapport à l'exemple que je t'ai donné cela se présenterait ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Public Sub AjoutAlarme(ByVal idAlarm As Integer, ByVal unit As String, ByVal moduleparam As String, ByVal description As String, ByVal niveaualarm As String, ByVal message As String, ByVal priority As String, ByVal seuil As String) _
        Implements IAlarmes.AjoutAlarme
        Dim x As UneAlarme = New UneAlarme ' pour toi : Dim x As Alarme = New Alarme 
        x.IdAlarm = idAlarm
        x.Unit = unit
        x.ModuleParam = moduleparam
        x.Description = description
        x.NiveauAlarm = niveaualarm
        x.Message = message
        x.Priority = priority
        x.Seuil = seuil
        MesAlarmes.DicoAlarmes.Add("Alarm" & idAlarm, x) ' c'est ici que tu génére  la clé qui est la concaténation entre un String "Alarm" et le numéro unique de l'alarme tu souhaites ajouter.
    Le premier élément du dico est la clé que tu généres par la concaténation entre un String "Alarm" et le numéro unique de l'alarme tu souhaites ajouter idAlarm

    C'est le dictionnaire MesAlarmes.DicoAlarmes qui est en public dans la classe DesAlarmes, qui permet de retrouver une alarme grâce à sa clé. (Si idAlarm = 2 => "Alarm" & idAlarm => Alarm2)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #43
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Le dico est juste un raccourci vers une alarme qui existe or lorsque la procédure AjoutAlarme prend fin, l'alarme créer dans cette procédure est supprimé.

  4. #44
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Vraiment c'est un générateur de variable qu'il me faut et ensuite il faut que je puissent déclarer objets en public avec la variable que je viens de générer sachant que chaque variable doit être unique.
    Non, un élément t'échappe, le dictionnaire en public te permet l'accés à toutes tes alarmes. (c'est la clé du dictionnaire qui correspond au générateur de variable)

    C'est le dictionnaire MesAlarmes.DicoAlarmes qui est en public dans la classe DesAlarmes, qui permet de retrouver une alarme grâce à sa clé. (Si idAlarm = 2 => "Alarm" & idAlarm => Alarm2)

    MesAlarmes.DicoAlarmes("Alarm2") est un objet alarme qui contient toutes les données de l'alarme qui a l'identifiant (idAlarm) "2" .
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #45
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Le dico est juste un raccourci vers une alarme qui existe or lorsque la procédure AjoutAlarme prend fin, l'alarme créer dans cette procédure est supprimé.
    la procédure AjoutAlarme cré une alarme en local
    La méthode Add du dictionnaire ajoute cette nouvelle alarme à sa liste
    nous avons un objet en mémoire qui est référencé par 2 variables :
    la variable locale
    le dictionnaire public
    Quand on sort de la procédure, la variable locale est détruite, pas l'objet, celui-ci est toujours référencé par le dictionnaire.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #46
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Il me semblait bien l'avoir précisé.
    Dans ce sujet, post 3 Voir le commentaire en fin de sub.
    Citation Envoyé par rv26t Voir le message
    Exemple pour l'ajout des alarmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      ''' <summary>Ajoute une alarme dans le dictionnaire des alarmes.</summary>
      ''' <param name="UnNom">Nom de l'alarme.</param>
      ''' <param name="UnNiveauDePriorite">Niveau de priorité.</param>
      ''' <remarks>Les alarmes sont identifiées par leur noms.</remarks>
      Public Sub AjoutAlarme(ByVal UnNom As String, ByVal UnNiveauDePriorite As Integer) _
      Implements IAlarmes.AjoutAlarme
        Dim NouvelleAlarme As UneAlarme = New UneAlarme
        NouvelleAlarme.Nom = UnNom
        NouvelleAlarme.NiveauDePriorité = UnNiveauDePriorite
        dicoAlarmes.Add(NouvelleAlarme.Nom, NouvelleAlarme)    ' ou  autre éciture équivalente : dicoAlarmes.Add(Nom, NouvelleAlarme)
        ' Note : en sortie de sub la variable NouvelleAlarme n'existe plus, cela n'est pas génant l'objet alarme créé est référencé par le dictionnaire.
      End Sub
    Ne pas oublier de définir la sub dans l'interface pour vb6. (c'est probablement de la que tu alimenteras ton dictionnaire.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #47
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je lance mon programme sans rien changer par rapport a ce que j'ai fait il y a 2H et poff le message d'erreur qui dit dico vide n'apparait plus.

  8. #48
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Je lance mon programme sans rien changer par rapport a ce que j'ai fait il y a 2H et poff le message d'erreur qui dit dico vide n'apparait plus.
    Bah, cà c'est les mystères de l'informatiques.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #49
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    J'ai trouver réellement mon problème, lorsque j’instancie la classe Alarme dans le VB6 qui me permet d'ouvrir par exemple mon Form2 ou d'ajouter des alarmes dans mon dico alors ces alarmes ne sont disponible que pour les appels de procédure qui utilise la même instance sur le VB6. Si par exemple, j'instancie ma classe dans mon Form2 pour pouvoir utiliser des procédure et par la même occasion pouvoir profité de mon dico, le programme me répond que le dico est vide étant donnée que lors de l'instanciation, il reprend tous à zéro.

    Je voudrai bien une solution qui me permet soit d'utiliser l'interface et la classe appelé dans le programme VB6 dans tous mon programme Visual Studio via un Dico par exemple ou autre solution, etc....

    Soit géré le mon tick du timer du form2 à l’intérieur de ma classe Alarme par un appel dans la fonction GestAlarme par exemple mais dans ce cas la, je sais pas si je pourrais agir sur les éléments du Form2 (datagridview, bouton, label, etc....)

    Merci d'avance pour vos solution.

  10. #50
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je vais essayer de faire hérité mon Form2 de ma classe Alarme, normalement je verrai pouvoir faire appel au procédure et variable sans souci.

  11. #51
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    L'héritage de classe sur le Form2 mais crée plein d'erreur dans Form2.Designer.vb et je voulais pas trop toucher a ce fichier à l'origine.

  12. #52
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    J'ai l'impression que la solution ce trouve dans ce post ^^ je creuse un peu car j'ai sauté cette partie, il y a des truc très intéressant que je reviens sur les page précédente, j'ai l'impression que la réponse est déjà la !!

  13. #53
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Dans mon exemple la fenêtre à une propriété de type classe MesAlarmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class frmAlarmes
     
      Private mMesAlarmes As DesAlarmes
      Public Property MesAlarmes() As DesAlarmes
        Get
          Return mMesAlarmes
        End Get
        Set(ByVal value As DesAlarmes)
          mMesAlarmes = value
        End Set
      End Property
     
      Private Sub frmAlarmes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MessageBox.Show(mMesAlarmes.DicoAlarmes("a1").Priority) ' affiche 1 valeur passé par l'exe vb6 avec ajout alarme
    GestAlarme passe à ta fenêtre l'objet MesAlarmes alimenté par AjoutAlarme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Public Sub GestAlarme() _
      Implements IAlarmes.GestAlarme
        fenAlarmes.MesAlarmes = MesAlarmes
        fenAlarmes.ShowDialog()

    Avec la propriété MesAlames de ta fenêtre tu peux manipuler toutes les alarmes qui ont été transmises par vb6, et alimenter yon DataGridView.


    Pour info dans vb6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private mesAlarme As Alarmes.InterfaceAlarme ' la classe vb.net
    Private mesAlInt As Alarmes.IAlarmes ' l'interface pour vb6
     
    Private Sub Form_Load()
     Set mesAlarme = New Alarmes.InterfaceAlarme ' instancie la classe alarme (nous avons un objet alarme)
     Set mesAlInt = mesAlarme ' récupère l'interface à partir de l'objet alarme (permet d'avoir l'Intellisense ce qui est très pratique)
    End Sub
     
    ' initialisation des données et gestion des alarmes (propriétés nom et param)
    Private Sub Command1_Click()
      Call mesAlInt.AjoutAlarme("a1", 1)
      Call mesAlInt.GestAlarme  ' appele la sub de gestion des alarmes. (avec fenêtrage)
    End Sub
    Je vais regarder cette partie !!

  14. #54
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Mon programme marche très bien, j'arrive à récupérer ce qu'il ce trouve dans le dico mais j'ai un nouveau souci, lorsque je lance mon simulateur (Form1 en VB6 qui fait appel à un activeX "Échangeur thermique" ) avec un bouton start, puis quand je lance mon gestionnaire d'alarme, le timer de l'activeX arrêt de tourner ce qui arrêt mon simulateur. Alors il y a une procédure bizar avec le timer de l'activeX qui à était réalisé par mon tuteur, je vais d'abord voir avec lui et si je trouve pas de solution, je poste ton mon programme sur le Forum.

  15. #55
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    J'ai l'impression que la solution ce trouve dans ce post ^^ je creuse un peu car j'ai sauté cette partie, il y a des truc très intéressant que je reviens sur les page précédente, j'ai l'impression que la réponse est déjà la !!
    Effectivement normalement tu as tout dans cette discution

    Je n'ai pas trop le temps je vais essayer de faire un résumé. Je redétaillerais plus ce soir s'il le faut

    Je ne met que le code de la dll vb.net

    Il y a une interface qui permet à vb6 de faire le lien (Instancié par vb6, cré l'objet)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ''' <summary>L'interface représente un Wrapper de la classe Alarme pour les programmes exe vb6.</summary>
    ''' <remarks>Sera exportée dans la bibliothéque de type créé dans l'assembly.</remarks>
    Public Interface IAlarmes
      Sub GestAlarme()
      Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer)
      Sub LitAlarmes(ByVal UnId As String, ByRef LaPriorite As Integer)
    End Interface
    elle permet à vb6 d'accéder au sub de la dll


    Ces sub sont implémenté dans InterfaceAlarmes
    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
    Public Class InterfaceAlarme
      Implements IAlarmes ' contrat entre classe et interface.
     
      Private fenAlarmes As frmAlarmes = New frmAlarmes
      Private MesAlarmes As DesAlarmes = New DesAlarmes ' a voir la portée
     
      ''' <summary>Ajoute une alarme au dictionnaire.</summary>
      ''' <param name="UnId">Identifiant d'une alarme.</param>
      ''' <param name="LaPriorite">Une priorité.</param>
      ''' <remarks></remarks>
      Public Sub AjoutAlarme(ByVal UnId As String, ByVal LaPriorite As Integer) Implements IAlarmes.AjoutAlarme
        Dim NouvelleAlarme As UneAlarme = New UneAlarme
        NouvelleAlarme.IdAlarm = UnId
        NouvelleAlarme.ChangeNiveauPriorite(LaPriorite)
        MesAlarmes.DicoAlarmes.Add(NouvelleAlarme.IdAlarm, NouvelleAlarme)
        System.Windows.Forms.MessageBox.Show(" ajout " & MesAlarmes.DicoAlarmes("a1").Priority)
      End Sub
     
      Public Sub GestAlarme() Implements IAlarmes.GestAlarme
        fenAlarmes.MesAlarmes = MesAlarmes ' donne les alarmes à la fenêtre
        fenAlarmes.ShowDialog()
        MesAlarmes = fenAlarmes.MesAlarmes ' récupère les alamres traitées par la fenêtre
      End Sub
     
      Public Sub LitAlarmes(ByVal UnId As String, ByRef LaPriorite As Integer) Implements IAlarmes.LitAlarmes
        LaPriorite = MesAlarmes.DicoAlarmes(UnId).Priority
      End Sub
     
    End Class
    Les éléments importants sont
    Private MesAlarmes As DesAlarmes = New DesAlarmes. qui permet de créé une instance publique de DesAlarmes qui contient le dictionnaire qui est en public (voir (1))

    Private fenAlarmes As frmAlarmes = New frmAlarmes.
    qui cré une instance de la fenêtre de travail.

    Ensuite les sub
    AjoutAlarme alimente le dictionnaire qui est en public.
    Les données des alarmes sont donc maintenant dans le dictionnaire.

    GestAlarme passe à la fenêtre créée l'instance de DesAlarmes avec le dictionnaire en public qui contient toutes les alarmes
    .



    (1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class DesAlarmes
     
      Private mDicoAlarmes As Dictionary(Of String, UneAlarme) = New Dictionary(Of String, UneAlarme)
      Public Property DicoAlarmes() As Dictionary(Of String, UneAlarme)
        Get
          Return mDicoAlarmes
        End Get
        Set(ByVal value As Dictionary(Of String, UneAlarme))
          mDicoAlarmes = value
        End Set
      End Property
    J'y reviendrai ce soir ci nécessaire.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #56
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    J'ai trouver le problème, j'avais mi ShowDialog() dans ma procédure GestAlarme() au lieu de Show(). En faite sa m'ouvre mon Form2 mais sa stopé mon simulateur sous VB6 du coup la sa marche super bien, je commence deja la partie optimisation puis je vais voir cette aprem ce que tu ma posté.

  17. #57
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Post N°1 de la discution
    Citation Envoyé par dragondumond Voir le message
    Bonjour,

    Je voudrai savoir comment faire pour créer un exécutable à partir de mon programme en VB.NET, j'ai essayer de publier mon programme mais la seule chose que j'ai réussi à avoir est un setup !!

    Mon but final et de générer deux exécutable, l'un est un simulateur et l'autre est un gestionnaire d'alarme que je voudrai lier à mon simulateur par un bouton.

    Merci d'avance pour vos solutions.
    Attention, Le simulateur devait être lancé par un bouton, c'est pour cela que dans mes exemples j'ai ouvert la fenêtre en modal par ShowDialog.
    Lappli vb6 était ainsi bloquée, cela permettait de finir le traitement des alarmes reçues dans la fenêtre dll vb.net . Quand cell-ci était fermée on pouvait recliquer pour relancer le traitement d'un autre ensemble d'alarmes.

    Citation Envoyé par dragondumond Voir le message
    J'ai trouver le problème, j'avais mi ShowDialog() dans ma procédure GestAlarme() au lieu de Show(). En faite sa m'ouvre mon Form2 mais sa stopé mon simulateur sous VB6 du coup la sa marche super bien, je commence deja la partie optimisation puis je vais voir cette aprem ce que tu ma posté.
    Par contre si cette fonctionnalité change (plus de bouton) et la fenêtre n'est plus n'est plus en modal, il faut faire attention.
    qu'il n'y ai qu'une instance de DesAlarmes qui contient le dictionnaire des alarmes. (un singleton résoud le problème)
    [Edit] On ne peut pas avoir d'élément shared au niveau de l'interface pour la rendre unique. [/Edit]
    de gérer les envoies de données de vb6 vers la dll vb.net (beaucoup plus complexe à mon avis)

    Une question : une fois les alarmes traitées doivent elles être renvoyées vers vb6 ?
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  18. #58
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Pour la classe DesAlarmes en instance unique par singleton
    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
    Public Class DesAlarmes
     
      Private Shared _InstanceAlarmesUnique As DesAlarmes
     
    #Region "Unicité singleton"
      ''' <summary>GetInstance permet de récupérer une instance unique de "DesAlarmes"</summary>
      ''' <returns>Une instance unique.</returns>
      ''' <remarks>Si l'instance n'existe pas renvoie celle créée, sinon renvoie celle qui existe</remarks>
      Public Shared Function GetInstance() As DesAlarmes
        If _InstanceAlarmesUnique Is Nothing Then _InstanceAlarmesUnique = New DesAlarmes()
        Return _InstanceAlarmesUnique
      End Function
    #End Region
     
      Private mDicoAlarmes As Dictionary(Of String, UneAlarme) = New Dictionary(Of String, UneAlarme)
      Public Property DicoAlarmes() As Dictionary(Of String, UneAlarme)
        Get
          Return mDicoAlarmes
        End Get
        Set(ByVal value As Dictionary(Of String, UneAlarme))
          mDicoAlarmes = value
        End Set
      End Property
    Def dans InterfaceAlarmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ''' <summary>La classe interface des alarmes visible hors bibliothèque.</summary>
    Public Class InterfaceAlarme
      Implements IAlarmes ' contrat entre classe et interface.
     
      Private fenAlarmes As frmAlarmes = New frmAlarmes
        Private MesAlarmes As DesAlarmes = DesAlarmes.GetInstance ' pas de new, il sera fait une seule fois dans Getinstance, c'est cette sub qui vérifie l'unicité.

    Quelques petits tests.

    Je ne connais pas Linq, mais j'ai voulu voir ces capacités.

    Dans DesAlarmes, je veux définir une fonction compteur d'alarmes ayant une certaine priorité. (dans le dictionnaire des alarmes)
    Avec Linq
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Public Function LinqNbAlarmesDePriorite(ByVal LaPriorite As Integer) As Integer
        Return (From entree In DicoAlarmes Where (entree.Value.Priority = LaPriorite) Select entree).Count
      End Function
    est équivalent à (en vb classique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Public Function NbAlarmesDePriorite(ByVal LaPriorite As Integer) As Integer
        Dim NbAlarmes As Integer
        Dim paire As KeyValuePair(Of String, UneAlarme)
        For Each paire In DicoAlarmes
          If paire.Value.Priority = LaPriorite Then NbAlarmes += 1
        Next
        Return NbAlarmes
      End Function
    Autre test
    ce coup-ci dans la fenêtre d'affichage des alarmes toujours avec le dictionnaire des alarmes. (passé dans la propriété dictionnaire)
    Je place un Datagridview sans rien
    et je souhaite afficher toutes mes alarmes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        MonDGW.AutoGenerateColumns = True
        MonDGW.DataSource = MesAlarmes.DicoAlarmes.Select((Function(kv) New With {.LesCles = kv.Key, .LesPriorités = kv.Value.Priority})).ToArray
    m'affiche effectivement toutes les alarmes.
    (attention dans mes tests je n'ai que 2 propriétés, mais le principe est le même avec plus)

    Mieux,
    Toujours avec un autre datagridview sans rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        dgvPri.AutoGenerateColumns = True
        dgvPri.DataSource = (From entree In MesAlarmes.DicoAlarmes Where (entree.Value.Priority = Integer.Parse(txtNbAlPArPri.Text)) Select entree).Select((Function(kv) New With {.LesCles = kv.Key, .LesPriorités = kv.Value.Priority})).ToArray
    m'affiche dans le dgv toutes les alarmes ayant le niveau de priorité choisi (saisie par l'utilisateur dans txtNbAlPArPri.Text)
    C'est une combinaison des 2 éléments précédants (sans le count pour avoir la liste) époustouflant en une ligne de code.

    Cela peut être pratique pour toi pour montrer à l'utilisateur un certains nombre d'info suivant des critères de choix. (juste en visu)

    Je ne sais pas si tu me suis.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  19. #59
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Merci beaucoup pour ton aide !!

  20. #60
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Points : 148
    Points
    148
    Par défaut
    Je prend la journée pour mettre en ordre mon programme et je l'affiche sur le forum en mode résolu

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [PHP-JS] créer des espaces entre les mots php
    Par dgac2000 dans le forum Langage
    Réponses: 9
    Dernier message: 10/06/2019, 02h33
  2. Réponses: 6
    Dernier message: 04/06/2008, 23h50
  3. Créer des reperes sur les lignes de code
    Par alafu dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2007, 14h44
  4. Créer des DLL manipulant les tables d'une BDD
    Par dj_techno dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/02/2007, 08h20
  5. [Eclipse] [VE] Créer des menus avec les classes SWT de VE
    Par jbcorens dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 30/08/2005, 12h25

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