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 comparaison


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Par défaut Problème de comparaison
    Bonjour
    MS VB 2008 Express
    La routine suivante fonctionne correctement sur un fichier texte (FamaLaouncher.ini dans ce cas) mais pas sur un fichier HTML (avec bien sûr des données différentes) charset=UTF-8. IndexMenu indique -1 après la recherche alors que la donnée (href) est présente à plusieurs reprises dans le fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Public Sub LocaliseCat()
            ListBox1.Items.Clear()
            LauncherIni = File.ReadAllLines(fichier) 'On le copie dans le tableau
            IndexMenu = Array.IndexOf(LauncherIni, "Type: separator; Caption: Logiciels") ' on localise la ligne précédant les rubriques
            MsgBox(IndexMenu.ToString)
            IndexMenu = IndexMenu + 1  'On positionne sur le 1er logiciel
            While Not LauncherIni(IndexMenu).Contains("separator")
                Decoupe = LauncherIni(IndexMenu).Split(":")
                ListBox1.Items.Add(LTrim(Decoupe(3)) + ":" + IndexMenu.ToString)
                IndexMenu = IndexMenu + 1
            End While
        End Sub
    Quelqu'un peut-il m'aider à comprendre ce problème et éventuellement le régler.
    Merci

  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
    avec la technique que tu utilises, tu cherches une ligne qui est égale à "Type: separator; Caption: Logiciels". Si c'est juste une partie de la ligne qui est égale à ce texte, elle ne sera pas renvoyée par IndexOf... Essaie plutôt avec la méthode FindIndex, qui permet de spécifier un prédicat à évaluer sur chaque élément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IndexMenu = Array.FindIndex(Of String)(LauncherIni, Function (s) s.Contains("Type: separator; Caption: Logiciels"))

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Par défaut
    Je n'ai pas de problème avec cette routine bien qu'effectivement "Type: separator; Caption: Logiciels" ne représente qu'une partie de la ligne.
    Mon problème est que cette même routine avec un autre fichier de format HTML avec un charset=UTF-8 la comparaison ne marche pas .
    Je vais tout de même essayer ta proposition mais j'aimerai bien comprendre à quoi est due cette différence de comportement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Par défaut
    La solution donnée par Tomlev a réglé mon pb (je l'en remercie).
    Si quelqu'un a une idée sur le pourquoi du non fonctionnement avec IndexOf
    me la donne bien que le sujet soit clos.
    Merci

  5. #5
    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
    ben je t'ai déjà expliqué le pourquoi...
    ton tableau LauncherIni contient des lignes entières, et toi tu cherches une partie de la ligne. IndexOf cherche une ligne qui correspond exactement (entièrement) au texte que tu cherches, et comme une telle ligne n'existe pas, ça marche pas... il faut chercher une ligne qui contient le texte recherché

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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