Accueil > > > UTILISATION DES PROPERTYBAG: FICHIER DE CONFIGURATION
UTILISATION DES PROPERTYBAG: FICHIER DE CONFIGURATION
Information sur la source
Description
Quand on doit sauver les options de configuration, on a deux choix: soit dans une DB (si le prg en utilise une), soit dans un fichier INI (trop lisible dans certains cas). Ce que je vous proprose est l'utilisation de l'objet PropertyBag qui n'est autre que celui utilisé quand on sauve les propriété d'un contrôle (.OCX) pendant le design-time. Sauver le contenu ci-dessous dans un fichier nommé config.cls
Source
- VERSION 1.0 CLASS
- BEGIN
- MultiUse = -1 'True
- Persistable = 0 'NotPersistable
- DataBindingBehavior = 0 'vbNone
- DataSourceBehavior = 0 'vbNone
- MTSTransactionMode = 0 'NotAnMTSObject
- END
- Attribute VB_Name = "Config"
- Attribute VB_GlobalNameSpace = False
- Attribute VB_Creatable = True
- Attribute VB_PredeclaredId = False
- Attribute VB_Exposed = False
- Option Explicit
- Private colPName As Collection
- Private colPValue As Collection
-
- Private Sub Class_Initialize()
- Set colPName = New Collection
- Set colPValue = New Collection
- End Sub
-
- Private Sub Class_Terminate()
- Set colPName = Nothing
- Set colPValue = Nothing
- End Sub
-
- Public Property Get PropertyValue(ByVal PropertyName As String) As Variant
- Dim I As Integer
-
- I = PropertyIndex(PropertyName)
- If I > 0 Then
- PropertyValue = colPValue(I)
- Else
- PropertyValue = Null
- End If
- End Property
-
- Public Property Let PropertyValue(ByVal PropertyName As String, ByVal NewValue As Variant)
- Dim I As Integer
-
- I = PropertyIndex(PropertyName)
- If I > 0 Then
- If IsNull(NewValue) = True Then
- colPName.Remove I
- colPValue.Remove I
- Else
- colPName.Add LCase$(Trim$(PropertyName))
- colPValue.Add NewValue
- End If
- Else
- If IsNull(NewValue) = False Then
- colPName.Add LCase$(Trim$(PropertyName))
- colPValue.Add NewValue
- End If
- End If
- End Property
-
- Public Function SaveFile(ByVal FileName As String) As Boolean
- Dim PB As PropertyBag
- Dim I As Integer
-
- If Len(FileName) > 0 Then
- Set PB = New PropertyBag
- PB.WriteProperty "PropertyCount", colPName.Count
- For I = 1 To colPName.Count
- PB.WriteProperty "PropertyName" & I, colPName(I)
- PB.WriteProperty "PropertyValue" & I, colPValue(I)
- Next
- On Error Resume Next
- Kill FileName
- On Error GoTo 0
- Open FileName For Binary As #1
- Put #1, , PB.Contents
- Close #1
- End If
- SaveFile = True
- End Function
-
- Public Function LoadFile(ByVal FileName As String) As Boolean
- Dim PB As PropertyBag
- Dim I As Integer
- 'Dim NbDtl As Integer
- Dim vPB As Variant
- Dim bPB() As Byte
- 'Dim VD As CVerDetail
- 'Dim Pwd As String
-
- ClearCollection colPName
- ClearCollection colPValue
-
- If Len(FileName) > 0 Then
- On Error GoTo ErrorOpen
- Open FileName For Binary As #1
- Get #1, , vPB
- bPB = vPB
- Close #1
- Set PB = New PropertyBag
- PB.Contents = bPB
-
- For I = 1 To PB.ReadProperty("PropertyCount", 0)
- colPName.Add PB.ReadProperty("PropertyName" & I, "")
- colPValue.Add PB.ReadProperty("PropertyValue" & I, Null)
- Next
- LoadFile = True
- Else
- LoadFile = False
- End If
- Exit Function
-
- ErrorOpen:
- Close 1
- LoadFile = False
- Exit Function
- End Function
-
- Private Function PropertyExists(ByVal PropertyName As String) As Boolean
- If PropertyIndex(PropertyName) > 0 Then PropertyExists = True
- End Function
-
- Private Function PropertyIndex(ByVal PropertyName As String) As Integer
- Dim I As Integer
-
- PropertyName = LCase$(Trim$(PropertyName))
- For I = 1 To colPName.Count
- If colPName(I) = PropertyName Then PropertyIndex = I: Exit Function
- Next
- End Function
-
- Private Sub ClearCollection(ByRef Col As Collection)
- While Col.Count > 0
- Col.Remove 1
- Wend
- End Sub
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "Config"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Private colPName As Collection
Private colPValue As Collection
Private Sub Class_Initialize()
Set colPName = New Collection
Set colPValue = New Collection
End Sub
Private Sub Class_Terminate()
Set colPName = Nothing
Set colPValue = Nothing
End Sub
Public Property Get PropertyValue(ByVal PropertyName As String) As Variant
Dim I As Integer
I = PropertyIndex(PropertyName)
If I > 0 Then
PropertyValue = colPValue(I)
Else
PropertyValue = Null
End If
End Property
Public Property Let PropertyValue(ByVal PropertyName As String, ByVal NewValue As Variant)
Dim I As Integer
I = PropertyIndex(PropertyName)
If I > 0 Then
If IsNull(NewValue) = True Then
colPName.Remove I
colPValue.Remove I
Else
colPName.Add LCase$(Trim$(PropertyName))
colPValue.Add NewValue
End If
Else
If IsNull(NewValue) = False Then
colPName.Add LCase$(Trim$(PropertyName))
colPValue.Add NewValue
End If
End If
End Property
Public Function SaveFile(ByVal FileName As String) As Boolean
Dim PB As PropertyBag
Dim I As Integer
If Len(FileName) > 0 Then
Set PB = New PropertyBag
PB.WriteProperty "PropertyCount", colPName.Count
For I = 1 To colPName.Count
PB.WriteProperty "PropertyName" & I, colPName(I)
PB.WriteProperty "PropertyValue" & I, colPValue(I)
Next
On Error Resume Next
Kill FileName
On Error GoTo 0
Open FileName For Binary As #1
Put #1, , PB.Contents
Close #1
End If
SaveFile = True
End Function
Public Function LoadFile(ByVal FileName As String) As Boolean
Dim PB As PropertyBag
Dim I As Integer
'Dim NbDtl As Integer
Dim vPB As Variant
Dim bPB() As Byte
'Dim VD As CVerDetail
'Dim Pwd As String
ClearCollection colPName
ClearCollection colPValue
If Len(FileName) > 0 Then
On Error GoTo ErrorOpen
Open FileName For Binary As #1
Get #1, , vPB
bPB = vPB
Close #1
Set PB = New PropertyBag
PB.Contents = bPB
For I = 1 To PB.ReadProperty("PropertyCount", 0)
colPName.Add PB.ReadProperty("PropertyName" & I, "")
colPValue.Add PB.ReadProperty("PropertyValue" & I, Null)
Next
LoadFile = True
Else
LoadFile = False
End If
Exit Function
ErrorOpen:
Close 1
LoadFile = False
Exit Function
End Function
Private Function PropertyExists(ByVal PropertyName As String) As Boolean
If PropertyIndex(PropertyName) > 0 Then PropertyExists = True
End Function
Private Function PropertyIndex(ByVal PropertyName As String) As Integer
Dim I As Integer
PropertyName = LCase$(Trim$(PropertyName))
For I = 1 To colPName.Count
If colPName(I) = PropertyName Then PropertyIndex = I: Exit Function
Next
End Function
Private Sub ClearCollection(ByRef Col As Collection)
While Col.Count > 0
Col.Remove 1
Wend
End Sub
Conclusion
Voici un exemple d'utilisation. Mettez-le dans un module et n'oubliez pas de changer, dans le propriétés du projet, que le démarrage est la sub Main.
>>>>>>>> Début de sub Main >>>>>>>>>>>>>>>>> Sub Main() Dim X As Config
Set X = New Config X.PropertyValue("DateTime") = Now X.PropertyValue("Version") = App.Major X.PropertyValue("SayHello") = "Hello" Debug.Print X.PropertyValue("DateTime") Debug.Print X.PropertyValue("Version") Debug.Print X.PropertyValue("SayHello") Debug.Print X.PropertyValue("Invalid")
X.SaveFile "C:\Temp\TestFile.Cfg" Set X = Nothing Set X = New Config X.LoadFile "C:\Temp\TestFile.Cfg" Debug.Print X.PropertyValue("DateTime") Debug.Print X.PropertyValue("Version") Debug.Print X.PropertyValue("SayHello") Debug.Print X.PropertyValue("Invalid") End Sub <<<<<<<<<<<<<< Fin de Sub Main <<<<<<<<<<<<<<<<<
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
COnfiguration fichier xml [ par Markus971 ]
Bonjour, je débute avec les fichies xml et je voudrais savoir comment quel valeur correspond le type de donnée booléen. voici le code :<Item>
Utilisation fichier de configuration [ par MacWarrior ]
Bonjour à tous, Depuis un bon moment maintenant, je cherche à utiliser un fichier de configuration de ce type : // Mon Commentaire //Nom_du_paramètre
Problème pour renommer un fichier avant de l'envoyer par mail [ par mistermail ]
Bonjour, Voila j'aimerais renommer les fichiers présents dans un répertoire avant de les envoyer par mail. Je ne vois pas où se trouve le prob
Simple avis sur l'utilisation d'un fichier de configuration [ par Hauwee ]
Bonsoir,Je vais développer une appli multi-postes. Chaque instance devra accéder à un fichier de configuration situé sur un serveur, dans un répertoir
Charger une valuer dans une combobox depuis un fichier texte [ par patmtp35 ]
voila Je suis novice j'a presque finit mon GUI pour créer un fichier de configuration pour un de mes dev. mais je bloque sur un point. Avec ce GUI
Access 2000, lire un fichier texte comme fichier de configuration. [ par bs605124 ]
J'ai un fichier texte qui sert de configuration :Ville = BruxellesCompteur = 2Stock = 3568A l'ouverture d'access, comment mettre ces 3 données dans de
Fichier de configuration d'application [ par Ralph29 ]
Bjr à tous...Je sui développeur depuis peu, alors soyez indulgent face à ma grande ignorance face à ce problème qui peut paraitre simple mais qui est
Fichier de configuration en VB.NET (controle dynamique) [ par Romuald76 ]
Salut à tous,Voila je développe une application et j'aurais besoin de stocker des valeurs comme par exemple un nom de connexion. Chaque utilisateur pe
app.config [ par Sipat ]
Bonsoir,J'aimerai savoir si le fichier app.config et obligatoire avec le fichier générer ? Voilà mon fichier si je l'enleve il se produit une erreur e
fichier de configuration [ par SIKOV ]
bonjourje voudrais savoir deux choses:1) Comment créer un fichier de configuration pour une application 2) Comment à partir d'un CD je peux transférer
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : TEMPS REEL RE : TEMPS REEL par NHenry
Cliquez pour lire la suite par NHenry
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|