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 :

Lister le nombre de lignes d'une section d'un fichier ini [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste Service Client
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste Service Client
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Par défaut Lister le nombre de lignes d'une section d'un fichier ini
    Bonjour,

    Je développe un programme pour ma boîte sur le logiciel Visual Basic 2008 Express.

    Je bloque sur un problème de détection du nombre de ligne dans un fichier ini.

    Mon fichier Ini s'appelle Cassio.ini, il contient :
    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
    [NomEmployésService1]
    Employé1=xxxxxxxx
    Employé2=xxxxxxxx
    Employé3=xxxxxxxx
    Employé4=xxxxxxxx
    Employé5=xxxxxxxx
    Employé6=xxxxxxxx
    Employé7=xxxxxxxx
    Employé8=xxxxxxxx
     
    [NomEmployésService2]
    Employé1=xxxxxxxx
    Employé2=xxxxxxxx
    Employé3=xxxxxxxx
    Employé4=xxxxxxxx
    Employé5=xxxxxxxx
    Employé6=xxxxxxxx
    Employé7=xxxxxxxx
    Employé8=xxxxxxxx
     
    [FichierExcel]
    Stat_Flux=c:\xxxxxxx.xls
    Planning_Congés=c:\xxxxxxx.xls
    Le but étant d'aller chercher les lignes du tableau de congé du service correspondant au nom des employés du fichier ini.
    La connexion avec le fichier Excel est impeccable, j'ai fais l'incrémentation des colonnes, je detecte tout ce qu'il faut dans les cellules.

    Il ne me reste plus qu'a obtenir le nombre d'employés du service pour effectuer quelque chose du genre :

    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
     
    For i = 0 To 120
         For j = 1 To NbrSection
                If (x2WorkSheet.Cells("B" & i).Value = LireINI("[NomEmployésService1]", "Employé" & j)) Then
                    'Ma boucle de test sur les cellules de la ligne 
                End If
          Next j
    Next i
    For i = 0 To 120
          For j = 1 To NbrSection
     
                If (x2WorkSheet.Cells("B" & i).Value = LireINI("[NomEmployésService2]", "Employé" & j)) Then
                    'Ma boucle de test sur les cellules de la ligne 
                End If
          Next j
    Next i
    Mais avec

    Et la je bloque.


    Pour l'instant mon module contient la fonction :

    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
    Module MyModule
     
        Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
     
        Function LireINI(ByVal Entete As String, ByVal Variable As String) As String
            Dim file = Application.StartupPath & "Cassio.ini"
            Dim Deff As String = ""
            Try
                Dim StrBuild As New System.Text.StringBuilder(90)
                Dim Ret As Integer = GetPrivateProfileString(Entete, Variable, Deff, StrBuild, 90, file)
                Return StrBuild.ToString
            Catch
                Return Deff
            End Try
        End Function
     
        Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer

    J'arrive donc a lire une valeur d'une section mais aucune idée pour detecter le nombre de ligne d'une section.
    Ce qui me permettrait de chercher des lignes Excel contenant chaque nom d'employé d'un service.

    Un algo de ce que je voudrait faire serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Debut
     
        Lire Fichier ini
        NbrLigne = 0
        Pour valeur[1] de Section1 jusqua valeur[max] de Section 1 Faire
             NbrLigne += 1
        FPour
    Fin
    J'ai eu beau chercher sur les tutos et autres, très peu parle de fichier ini et encore moins du problème en question.

    Pouvez-vous m'aider ?

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Plutôt que de passer par les API de gestion de fichiers INI, je me contenterais de lire le fichier INI comme un simple fichier texte.

    Dans une première boucle de ReadLine(), tu recherches ta section.

    Ensuite, tu boucle de nouveau avec des ReadLine()
    => Si la ligne.Trim() ne commence pas par "#" et est plus longue que 0, alors c'est une entrée, donc tu incrémentes ton compteur.
    => Accessoirement, en même temps tu peux faire un Split('=')[1] sur la ligne pour récupérer le nom de ton employé.

    Et c'est terminé
    (et du coup, t'as pas besoin de savoir combien il y a de lignes dans ta section )

  3. #3
    Membre averti
    Homme Profil pro
    Analyste Service Client
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste Service Client
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Par défaut
    Déjà, merci pour ta réponse rapide StringBuilder !

    J'ai hésité à faire quelque chose comme ça, ce que je faisait pour un précédent programme mais ça ne plait pas à mon chef, qui veut que j'utilise les fonctions de détection des sections des fichier INI...

    Pourquoi faire simple...

    Sinon j'essaierais de le passer discrétement en disant que j'y suis arrivé et en lui présentant uniquement le programme fini, mais je t'avouerais que ça me plaît moyen également et j'aime bien avoir quelque chose de propre.

    Sinon autant tout mettre dans un fichier .txt ou même .doc carrement

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Dit à ton chef que les fichiers INI, c'était à la mode à l'époque de Windows 16 bits.

    Qu'avec Windows 32 bits, ça a été remplacé par la base de registres.

    Et qu'avec l'avènement du XML, ça a été définitivement remplacé par des fichiers XML, plus facilement manipulables.

    Bref, je suis même étonné qu'on n'aie pas encore de warning à la compilation quant à une prochaine dépréciation des API de gestion de fichiers INI... C'est juste bon à mettre dans les musées à côté du Goupil (ça date de la même époque...)

  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
    Sinon pour lire des fichiers INI, tu peux utiliser la classe IniFile de Dvp.NET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var iniFile = new IniFile(fileName);
    foreach(var sectionName in iniFile.Sections.Keys)
    {
        Console.WriteLine("Section: {0}", sectionName);
        foreach(var entry in iniFile.Sections[sectionName])
        {
            Console.WriteLine("{0} = {1}", entry.Key, entry.Value);
        }
    }

  6. #6
    Membre averti
    Homme Profil pro
    Analyste Service Client
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste Service Client
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Par défaut
    @StringBuilder : Oui mais les banques ne sont pas connu pour la jeunesse de leur SI mais plutot pour l'avoir adaptés aux nouvelles technologies.
    Concernant les warnings, je croise les doigts alors

    @tomlev : Ok je teste cette après-midi et je fais un retour ici !

  7. #7
    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 StringBuilder Voir le message
    Bref, je suis même étonné qu'on n'aie pas encore de warning à la compilation quant à une prochaine dépréciation des API de gestion de fichiers INI...
    Bah le compilo C# n'est pas supposé avoir connaissance des API natives de Windows... donc ça m'étonnerait qu'on voit un jour ce genre de warning

  8. #8
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Bah le compilo C# n'est pas supposé avoir connaissance des API natives de Windows... donc ça m'étonnerait qu'on voit un jour ce genre de warning
    Oui, mais rien ne nous permet d'affirmer que dans la prochaine version de Windows, ces API existerons encore.

    Donc certes, pas de Warning, mais ça compilera/exécutera plus du tout, c'est guère mieux

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/08/2008, 15h29
  2. Lire le nom d'une section d'un fichier INI
    Par Flow_75 dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/02/2007, 22h01
  3. Réponses: 5
    Dernier message: 22/08/2006, 10h35
  4. Comment écrire une section dans un fichier ini?
    Par Jayceblaster dans le forum Delphi
    Réponses: 5
    Dernier message: 26/06/2006, 14h08

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