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 :

Crash application sans message erreur.


Sujet :

VB.NET

  1. #21
    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
    Par défaut
    Ensuite, si l'on a souvent besoin de faire ce genre de recherche dans le programme, on construit de petites fonctions.

    Recherche d'une ligne présente un certain nombre de fois dans un fichier texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Function ChercheLignes(ByVal Fichier As String, ByVal LigneCherchee As String, ByVal NbOccurrence As Integer) As Boolean
            Return ((From ligne In System.IO.File.ReadAllLines(Fichier) Where ligne = LigneCherchee Select 1).Count = NbOccurrence)
        End Function
    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.

  2. #22
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    ton post encore plus court et encore plus beau a disparu

    sinon là j'aurais bien vu un if nboccurrence = 1 then (...).firstordefault isnot nothing qui doit être plus performant

    et en effet un conseil pour les débutants, si vous avez plusieurs fois (donc au moins 2) le même code ou à peu près le même code à quelques mots ou paramètres près c'est qu'il y a moyen de factoriser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #23
    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
    Par défaut
    Il n'était pas plus court et plus beau mais différent. (je l'ai vu juste après l'avoir envoyé, désolé)

    Il ne prenait pas en compte le nombre d'occurrences.
    Il permettait simplement de savoir si une ligne existait dans un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Function ContientLigne(ByVal Fichier As String, ByVal LigneCherchee As String) As Boolean
            Return (System.IO.File.ReadAllLines(Fichier).Contains(LigneCherchee))
        End Function
    Il n'a pas beaucoup d'intérêt, on gagne peu de code, peu de lisibilité, et l'autre code donne la même solution en donnant 1 pour le nombre d'occurrence. (qui peut le plus peu le moins)


    Par contre contains a l'air est légèrement plus performant que la sélection linq. Certainement parsequ'il interrompt la recherche dès la 1ére occurrence trouvée.
    il pourrait s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Function ChercheLignes(ByVal Fichier As String, ByVal LigneCherchee As String) As Boolean
            Return (System.IO.File.ReadAllLines(Fichier).Contains(LigneCherchee))
        End Function
    Pour utiliser la surcharge et ainsi optimiser la recherche. (mais sur un petit fichier l'impact est négligeable)
    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.

  4. #24
    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
    Par défaut
    Citation Envoyé par botbot Voir le message
    ...

    Merci pour le code rv26tn je vais tester cela...

    ...
    De rien

    Pour résumé ton code peut s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Fermeture(ByVal sender As Object, ByVal e As EventArgs)
            Me.ToolStripProgressBar2.Value = 100
            Me.ToolStripStatusLabel3.Text = "Terminé."
            Me.PictureBox24.Visible = ChercheLignes(FILE_RESULT & dossiertable & ".mtr", "                     <Status>Passed</Status>", 14) ' présence de 14 lignes "Passed" => picture visible
        End Sub
     
        Function ChercheLignes(ByVal Fichier As String, ByVal LigneCherchee As String, ByVal NbOccurence As Integer) As Boolean
            Return ((From ligne In System.IO.File.ReadAllLines(Fichier) Where ligne = LigneCherchee Select 1).Count = NbOccurence)
        End Function
    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. #25
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Bonjour à tous, si je ne m'abuse rv26t étant donné que je n'ai plus le "Me.invoke..." j'ai le même bug qu'auparavant.

    Du coup, j'ai fait un mix :

    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
     
     Private Sub fermeture()
     
            Dim testreussi As Boolean = ChercheLignes(FILE_RESULT & dossiertable & ".mtr", "                     <Status>Passed</Status>", 14) ' présence de 14 lignes "Passed" => picture visible
            resultattest(testreussi)
        End Sub
     
       Function ChercheLignes(ByVal Fichier As String, ByVal LigneCherchee As String, ByVal NbOccurence As Integer) As Boolean
            Return ((From ligne In System.IO.File.ReadAllLines(Fichier) Where ligne = LigneCherchee Select 1).Count = NbOccurence)
        End Function
     
     
        Public Sub resultattest(ByVal resultat As Boolean)
            If Me.InvokeRequired Then
                Me.Invoke(New Action(Of Boolean)(AddressOf resultattest), resultat)
                Exit Sub
            End If
            'MsgBox(num)
            Me.ToolStripProgressBar2.Value = 100
            Me.ToolStripStatusLabel3.Text = "Terminé."
            If resultat = True Then
                Me.PictureBox24.Visible = True
                Me.PictureBox23.Visible = False
            Else
                Me.PictureBox23.Visible = True
                Me.PictureBox24.Visible = False
            End If
        End Sub
    Si je vous montrait tout mon projet je suis sur que je passerai de 7500 lignes à 1500

  6. #26
    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
    Par défaut
    Citation Envoyé par botbot Voir le message
    Bonjour à tous, si je ne m'abuse rv26t étant donné que je n'ai plus le "Me.invoke..." j'ai le même bug qu'auparavant.

    Du coup, j'ai fait un mix :
    Effectivement je ne m'étais basé que sur ton code de départ pour tester (raccourcir le code).
    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. #27
    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
    Par défaut
    Je pense que ton nouveau code avec la correction doit pouvoir s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub fermeture()
            If Me.InvokeRequired Then
                Me.Invoke(New Action(AddressOf fermeture))
            Else
                Me.ToolStripProgressBar2.Value = 100
                Me.ToolStripStatusLabel3.Text = "Terminé."
                Me.PictureBox24.Visible = ChercheLignes(FILE_RESULT & dossiertable & ".mtr", "                     <Status>Passed</Status>", 14) ' présence de 14 lignes "Passed" => picture visible
                Me.PictureBox23.Visible = Not Me.PictureBox24.Visible ' la visibilité de PictureBox23 doit être l'inverse de PictureBox24
            End If
        End Sub
    A tester.

    Penser à marquer le sujet en
    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.

Discussions similaires

  1. Application qui quitte sans message d'erreur
    Par Pouknouki dans le forum VB.NET
    Réponses: 13
    Dernier message: 22/11/2013, 16h37
  2. [XL-2010] Crash aléatoire Excel 2010 sans message d'erreur
    Par franck_78 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2012, 09h59
  3. Réponses: 2
    Dernier message: 23/08/2007, 20h08
  4. [VBA-E]Détection de feuilles inexistantes sans message d'erreur
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2006, 08h39
  5. "try...except" sans message d'erreur
    Par SchpatziBreizh dans le forum Langage
    Réponses: 4
    Dernier message: 12/07/2005, 09h50

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