Gestion automatique de fichier ini par addin vb

Soyez le premier à donner votre avis sur cette source.

Vue 10 129 fois - Téléchargée 1 024 fois

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

Ajouter un commentaire Commentaires
Messages postés
395
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
19 juin 2009
1
Oui oui tres clair, je croit que je vais utilisé dans mes futur projet
Messages postés
32
Date d'inscription
dimanche 15 juin 2003
Statut
Membre
Dernière intervention
17 janvier 2007

Ergo,
1. la dll constitue le projet add-in compilé (un add-in se compile toujours en dll, il n'y a pas d'exe), je l'ai laissé à tout hasard, mais le upload a bien fonctionné. Tu n'a donc pas besoin de compiler le projet, juste besoin d'enregistrer la dll avec regsvr32.
2. comme la dll ne sert que d'addin, pas besoin de la distribuer avec ton projet (elle ne sert que dans l'IDE de VB pour dévlopper ton projet).
3. comme j'utilise la méthode open dans la classe clsConfig.cls pour lire le fichier ini, même pas besoin d'ajouter une composante/référence dans to projet.
J'espère que j'ai été clair ...

Renfield, merci!
Messages postés
395
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
19 juin 2009
1
ok merci ren, donc j'approuve a 100 % !! super ce truc !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
la dll ne fait que générer une classe...
celle ci pouvant alors etre utilisée partout...
Messages postés
395
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
19 juin 2009
1
juste une question qui me chiffone, la dll vu quelle est pour l'IDE, le projet que tu utilise doit donc être transmit avec cette dll pour que l'on puisse utilisé le code source,non ?? (je suis pour les addin, mais là ca me rebute pour un projet open)

Autre question, pour l'exe , je doit pas avoir besoin de cette dll ??

enfin sinon, c'est interessant, je doit dire que ta source est simpa !
J'utiliserai peut être !
Afficher les 7 commentaires

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.