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 association et stackoverflow


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Problème association et stackoverflow
    Bonsoir,

    Je suis actuellement en train de créer une application en wpf permettant entre autre de récupérer des informations sur un fichier texte. J'ai cherché des réponses, mais j'ai eu des problèmes concernant l'association entre mes 2 classes CFichier(contenant donc la méthode pour récupérer les fichiers) et ma classe d'interface MainWindow. Je n'ai pas d'erreur de code mais j'ai un doute sur la réalisation de l'association... De plus j'ai un problème de stackoverflow lors de l'instanciation de mon objet interface:


    Voici ma classe d'interface GestionEtiquette:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Imports System.IO
    Imports System.IO.FileSystemWatcher
    Imports System.Threading
    Imports System.Windows.Controls
    Imports System.Windows
    Imports System.Collections
    Imports System.Security.Permissions
    Imports System.IO.FileSystemEventArgs
    Imports Integration.CFichier
     
     
     
    Class GestionEtiquette
     
        Dim ObjetFichier As New CFichier
        Dim chemin As String = "C:\temp"
     
     
        Delegate Sub CallBackToUIThread(ByVal e As FileSystemEventArgs)
     
        Public Sub GestionEtiquette()
            InitializeComponent()
        End Sub
     
        Public Sub NotifyUIThreadOfChange(ByVal e As FileSystemEventArgs)
            ObjetFichier.recuperationAffichage(chemin)
        End Sub
     
     
     
        <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
        Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
     
            Try
                Dim Path As String = "C:\temp\FichierProdX"
     
                Dim watcher As New FileSystemWatcher()
                watcher.Path = Path
                ' Watch for changes in LastAccess and LastWrite times, and
                ' the renaming of files or directories. 
                watcher.NotifyFilter = NotifyFilters.LastWrite
                ' Only watch text files.
                watcher.Filter = "*.txt"
     
                ' Add event handlers.
                AddHandler watcher.Changed, AddressOf OnChanged
     
                ' Begin watching.
                watcher.EnableRaisingEvents = True
            Catch ex As Exception
                MsgBox("Erreur chargement")
            End Try
     
        End Sub
     
        Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
            Me.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, New CallBackToUIThread(AddressOf NotifyUIThreadOfChange), e)
        End Sub
    End Class
    Et voici la classe CFichier:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
    Public Class CFichier
     
        Dim ptr As New GestionEtiquette
     
     
        Public Sub CFichier()
     
            Me.SetGestionEtiquette(ptr)
        End Sub
     
     
     
     
        'Relation association'
        Public Sub SetGestionEtiquette(ByRef ObjetGestionEtiquette As GestionEtiquette)
            ptr = ObjetGestionEtiquette
        End Sub
     
        'Paramètre d'entrée  : chemin
        'Paramètre de sortie :
        'Paramètre E/S :
        'Resultat : 
        'Description de la méthode : permet récupération des informations d'un fichier texte et l'affichage dans une interface
        'Variable globale :
     
     
        Public Sub RecuperationAffichage(chemin)
     
     
            Try
                Dim Reader As New IO.StreamReader(chemin.ToString())
                'chemin du fichier'
                Dim Debut, Fin, i As Integer
                Debut = 1
                Fin = 12
                i = 0
                While i <= Fin
                    If i < Debut Then
                        'On lit dans le vide
                        MsgBox("rien a lire")
                    Else
                        'On assigne bien les lignes voulues
                        Dim ligne As String = Reader.ReadLine
                        Dim result As Object = ptr.GroupBox5.FindName("TextBox" & i)
                        If TypeOf result Is TextBox Then
                            Dim wantedChild As TextBox = TryCast(result, TextBox)
                            wantedChild.Text = ligne
                        End If
                    End If
                    i += 1
                End While
     
                Reader.Close()
     
            Catch ex As IOException 'en cas d'erreurs
                MsgBox("erreur bouton")
            End Try
     
     
     
     
     
        End Sub
    End Class
    et mon code d'erreur en pièce jointe.
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Tout ça est un peu compliqué non ? Si je comprends bien, GestionEtiquette correspond à une IHM qui va instancier un CFichier qui va instancier une GestionEtiquette qui va instancier un CFichier qui va ... : stackoverflow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class GestionEtiquette
        Dim ObjetFichier As New CFichier
    ...
    
    Public Class CFichier
        Dim ptr As New GestionEtiquette
    De plus, là, il y a un truc qui colle pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class CFichier
     
        Dim ptr As New GestionEtiquette
      
        Public Sub CFichier()
             Me.SetGestionEtiquette(ptr)
        End Sub 
     
        'Relation association'
        Public Sub SetGestionEtiquette(ByRef ObjetGestionEtiquette As GestionEtiquette)
            ptr = ObjetGestionEtiquette
        End Sub
    Ptr est instancié, la méthode CFichier (c'est censé être un constructeur ??) appelle la méthode SetGestionEtiquette et lui envoie ptr en paramètre. SetGestionEtiquette va donc affecter ptr à lui-même ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim chemin As String = "C:\temp"
    
    Public Sub NotifyUIThreadOfChange(ByVal e As FileSystemEventArgs)
        ObjetFichier.recuperationAffichage(chemin)
    End Sub
    ...
    
    Public Sub RecuperationAffichage(chemin)
    ...
    Dim Reader As New IO.StreamReader(chemin.ToString())
    ...
    End Sub
    Pense à typer tes variables !! D'ailleurs active l'option Option Strict à On dans les propriétés du projet, ça permettra d'éviter ce genre de liberté (et d'écrire Chemin.ToString() ).
    A priori, le paramètre chemin correspond à un répertoire donc le StreamReader va avoir du mal...

    Pour le reste, j'ai lu en diagonale mais il y a sûrement d'autres choses à dire. En fait, je n'arrive pas à comprendre qui fait quoi, quand et pourquoi ...

Discussions similaires

  1. Problème association EJB3 / Weblogic / JPA / JSF
    Par limalima dans le forum JSF
    Réponses: 2
    Dernier message: 18/06/2014, 22h17
  2. Problème association JFreeChart / MySQL
    Par marouene_ dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 23/04/2012, 23h22
  3. Problème association many to many
    Par Jamel_ dans le forum Hibernate
    Réponses: 3
    Dernier message: 07/07/2009, 22h23
  4. Problème association virtual & friend
    Par Hidekii dans le forum C++
    Réponses: 2
    Dernier message: 01/08/2006, 13h46

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