Gestion automatique de fichier ini par addin vb

Description

Voici ma modeste contribution au site, pour tous ceux qui n'aiment pas "hardcoder" des variables dans l'application et veulent se faciliter la gestion d'un fichier ini. J'ai quelques dixaines d'applications, chacune avec un fichier ini pour pouvoir paramétriser l'application d'une manière simple. Mais au fil du temps cela devient fastidieux. Auparavant j'utilisait des dictionnaires, ou j'ajoutais les paramètres dans le fichier ini, mais c'est lourd (retenir les nom cryptiques et longs, erreur de frappe, débogage ...). Mais plus besoin de tout cela ...

Ce petit addin s'occupe de la gestion du fichier ini dans votre application.
Toutes les paramètres dans le fichier ini sont repris en tant que propriétés dans une classe "clsConfig.cls" crée dynamiquement. Cela permet d'utiliser la fonction auto-complete lors de la programmation dans l'IDE (fini les erreurs de frappe!)
La classe gère:
- création et écriture dynamique du fichier ini et recharge automatique dans l'IDE.
- création et écriture dynamique du fichier clsConfig.cls et recharge automatique dans l'IDE.
- typage des paramètres (String, Long, Single)
- enregistrement des valeurs par défaut, qui sont utilisés lorsqu'un paramètre n'est pas repris dans le fichier ini.
Lors de la distribution de votre application, l'utilisateur final peut modifier le fichier ini, il sera relu en lors de l'exécution par la méthode Read() de la classe clsConfig.cls.

Attention, les fichiers clsConfig.cls et "Nom-du-projet".ini sont écrasés et réécrits à chaque click sur OK. Si vous y faites des modifications, cliquez sur Reread pour les relire dans le formulaire. En principe vous n'avez pas besoin de les modifier en dehors de l'Addin. Si vous voulez stoquer d'autres paramètres spciaux, utilisez de préférence un fichier ini séparé!

Source / Exemple :


Le code de la classe clsConfig.cls crée dynamiquement est du type:

Option Explicit

    Const Def_LogonUserName = "???"
    Const Def_LogonPassWord = "???"
    Const Def_StartUrl = "fr.meetic.lu"
    Const Def_Form_logon_page = "/authent/index.php"
    Const Def_Form_logon_target = "_top"
    Const Def_Form_logon_logname = "log"
    Const Def_Form_logon_logpwd = "pwd"

    Public LogonUserName As String
    Public LogonPassWord As String
    Public StartUrl As String
    Public Form_logon_page As String
    Public Form_logon_target As String
    Public Form_logon_logname As String
    Public Form_logon_logpwd As String

Public Sub Read()

    Dim line As String
    Dim equal As Long
    Dim t As Long

    LogonUserName = Def_LogonUserName
    LogonPassWord = Def_LogonPassWord
    StartUrl = Def_StartUrl
    Form_logon_page = Def_Form_logon_page
    Form_logon_target = Def_Form_logon_target
    Form_logon_logname = Def_Form_logon_logname
    Form_logon_logpwd = Def_Form_logon_logpwd

    t = FreeFile
    Open App.Path & "\MyMeeticBrowser.ini" For Input As #t
    Do While Not EOF(t)
        Line Input #t, line
        equal = InStr(line, "=")
        If equal > 0 Then
            Select Case Trim$(Left$(line, equal - 1))
                Case "LogonUserName"
                    LogonUserName = Trim$(Mid$(line, equal + 1))
                Case "LogonPassWord"
                    LogonPassWord = Trim$(Mid$(line, equal + 1))
                Case "StartUrl"
                    StartUrl = Trim$(Mid$(line, equal + 1))
                Case "Form_logon_page"
                    Form_logon_page = Trim$(Mid$(line, equal + 1))
                Case "Form_logon_target"
                    Form_logon_target = Trim$(Mid$(line, equal + 1))
                Case "Form_logon_logname"
                    Form_logon_logname = Trim$(Mid$(line, equal + 1))
                Case "Form_logon_logpwd"
                    Form_logon_logpwd = Trim$(Mid$(line, equal + 1))
            End Select
        End If
    Loop
    Close #t

End Sub

Conclusion :


Le projet contient certaines techniques intéressantes:
- gestion des erreurs
- redimensionnement automatique des colonnes de la ListView en fonction des textes dans les colonnes
- interaction programmatique avec l'IDE de VB
- sauvegarde dans le registre de la position et de la taille du formulaire
- le seul composant externe est le ListView, j'ai renoncé colontairement à des autres composantes (scrrun.dll pour le fso...) la lecture des fichier texte se fait par la bonne vielle méthode Open ...
- échange (swap) de deux listitems d'un ListView
- code assez bien documenté en français (généralement je document en anglais, mais je me suis dit que se code pouvait bien servir sur ce site)
- repositionnement des contrôles lors de l'évênement resize du formulaire (rien de chinois)
- tout le code se trouve au niveau du form frmAddin, le reste a été crée par le Wizard Addin

Bon, il peut y subsister des bugs, je ne l'ai pas encore testé à 100%, faites mois signe.
Il est aussi possible de l'améliorer:
- autres type que String, Long, Single
- gestion de cryptage/décryptage de mot de passe
- gestion des sections dans un fichier ini

L'installation est simple. Générer la dll, la copier dans un répertoire quelconque (p.ex. Windows\System32) et l'enregistrer avec "regsvr32 MyConfigClass.dll". Lors du prochain démarrage de VB, l'addin sera reconnu automatiquement.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.