LECTURE D'UN INI FILE EN VB.NET

Messages postés
190
Date d'inscription
lundi 25 novembre 2002
Statut
Membre
Dernière intervention
22 décembre 2009
- - Dernière réponse : cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
- 4 oct. 2012 à 13:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5665-lecture-d-un-ini-file-en-vb-net

ronanry
Messages postés
190
Date d'inscription
lundi 25 novembre 2002
Statut
Membre
Dernière intervention
22 décembre 2009
-
uh....j'en reste sans voix....
j'ai pas tester perso parce que j'ai pas compris a quoi ca servait..(honte a moi)
mais tu as du sacrement te casser la tete pour faire marcher tout ca....
sebaznar
Messages postés
15
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
8 juin 2005
-
D'abord je te remercie car cette classe m'a trop trop servi pour torturer les fichier ini dans tout les sens : MERCI

Un petit probleme toutefois : je n'ai pas réussi à utiliser DeleteKey et DeleteSection :(

Si tu pouvais m'éclairer un peu, je n'ai pas du tout comprendre de comment on s'en sert :)

tchô
troxsa
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
1 -
salut !

Juste pour dire que de copier coller un code sans commantaire sa sers a rien ! on sais meme pas quoi faire avec sa !

mais en tout ca sa donne des idés
si tu pouvais faire qu'elle que modification sur ton code et dire comment sa fonctionne sa serait trop top !

merci
cs_666Ange
Messages postés
19
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
2 mars 2009
-
Pas besoin de commentaires pour un si petit source, si tu es débutant c'est pas de ton niveau et si tu n'es pas débutant alors tu comprendra sans problèmes !!!

Bon source utile pret à l'emploi pour tous les niveaux ! Bravo et merci ca évite de se fatiguer à tout écrire et réinventer soi même ce qui existe déja.

Toute ma reconnaissance

Cordialement, Bill Tcherno
cs_666Ange
Messages postés
19
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
2 mars 2009
-
Ca marche comme ca a peu près :

Dim INI As New INIReader(Application.StartupPath.ToString() & "\datas.ini")

INI.Write("essai", "t", 100) 'creer une section "essai" qui contient une clé "t" de valeur 100

INI.DeleteKey("essai", "t") 'efface la clé "t" de la section "essai"

'Tu peux meme faire if(not INI.DeleteKey("essai", "t")) then erreur etc etc ...
michelsto
Messages postés
27
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
12 avril 2009
-
Merci Bill.
troxsa
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
1 -
oui et pour la lecture ?
michelsto
Messages postés
27
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
12 avril 2009
-
Là c'est plus possible.
Valeur=INI.ReadString("TAG", "KEY", "")
skowee59
Messages postés
78
Date d'inscription
vendredi 17 janvier 2003
Statut
Membre
Dernière intervention
29 juin 2006
-
Qq'un pourrait-il me dire à quoi correspond ==> New INIReader ?
Faut-il ajouter une référence pour pouvoir s'en servir ?
D'avance, merci.
michelsto
Messages postés
27
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
12 avril 2009
-
Tu ajoute simplement la classe que tu trouve dans le ZIP source à ton projet et c'est fait. Tu à acces à cette classe.
skowee59
Messages postés
78
Date d'inscription
vendredi 17 janvier 2003
Statut
Membre
Dernière intervention
29 juin 2006
-
Effectivement, pour l'instant, je n'avais pas télécharger le ZIP car je ne pensais pas qu'il y avait une classe dedans.
C ça qd on est pressé ;-) lol
Merci pour l'info.
@+
asem67
Messages postés
145
Date d'inscription
mardi 3 septembre 2002
Statut
Membre
Dernière intervention
24 février 2008
-
c'est cool c'est ce que je cherchais
dur le passage en VB.net !!!!!
mais ça viendra comme le vb6
JBE57
Messages postés
2
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
17 août 2006
-
Géant! juste ce qu'il me falait!
En effet, dur dur, le passage vers VB.net!
schreiber_jacques
Messages postés
5
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
30 novembre 2005
-
La meilleure classe du genre de ce site.
Y a vraiment rien à redire, c'est tout simplement du travail de pro. Merci pour ça!!!
GAETANDAUSSY
Messages postés
1
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
24 janvier 2006
-
superbe source
grand merci

chdauss
sousoulebarbu
Messages postés
101
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
11 janvier 2009
-
Super code, simple, utile et efficace.
Bravo
lebelm
Messages postés
17
Date d'inscription
mercredi 25 décembre 2002
Statut
Membre
Dernière intervention
11 juin 2006
-
Super, on aurait pas pu avoir plus simple. Rien de plus à ajouter à part un gros merci.
pymaster
Messages postés
74
Date d'inscription
vendredi 14 juillet 2006
Statut
Membre
Dernière intervention
14 août 2006
-
Génial !

Code simple, bien fait ... en gros rien à redire

Merci beaucoup, ce code va me faire sauver beaucoup de temps ^_^

PY
pbocsak
Messages postés
20
Date d'inscription
dimanche 15 janvier 2006
Statut
Membre
Dernière intervention
22 novembre 2007
-
Je ne sais pas ce que vous utilisez comme compilateur, mais mon MS VB 2005 Express Edition me dit "INIReader" is not defined :-s. J'ai loupé qqch?
EvilGost
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
2 -
excellent, merci.
mais à quoi sert "DefVal" dans le ReadString?
cs_Namiro
Messages postés
3
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
6 août 2006
-
Je ne suis que débutant en VB,mais j'ai quand même compris comment me servir de cette classe, et là j'ai été époustouflé, depuis le temps que je cherchais en vain comment réussir à manipuler des fichiers ".ini", et bien là j'ai été servi. Alors un grand merci à celui qui à écrit ce code mais aussi à ce site, grâce auquel il faut bien le dire je n'aurais jamais trouvé autant de codes sources et d'aides.Merci encore
cs_Namiro
Messages postés
3
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
6 août 2006
-
Pour répondre à EvilGost:"excellent, merci.
mais à quoi sert "DefVal" dans le ReadString? " je croi avoir compris que c'est la valeur qui sera renvoyée si aucune occurence n'a été trouvée par exemple si tu cherches une clé qui n'existe pas, et bien cette fonction de renverra la valeur DefVal.
EvilGost
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
2 -
Pas bete Namiro, j'avais pas fait le rapprochement avec DEFault VALue...merci a toi :)
cs_Namiro
Messages postés
3
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
6 août 2006
-
Mais de rien EvilGost, on est la pour s'entraider, c'est bien normal.
cs_ketchoupi
Messages postés
14
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
23 novembre 2008
-
Un grand merci cette petite class ma fait gagner un temps precieux
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31 -
A mon tour de récupérer cette source par pure feignantise.

Avant de me lancer dans la récupération des api, j'ai voulue voir si rien n'avait été implanté dans .net.

Et je suis arrivé ici. Pratique quand la msdn pointe sur son site de source préféré

Thanks
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
43 -
La source a été créée en 2003, ce qui explique certainement le fait de l'utilisation de l'extension INI.
Il est clair qu'à l'heure actuelle, la source est devenue obsolète, tous fichiers INI devant être, à mon humble avis, remplacer par un fichier XML.
cs_M51
Messages postés
64
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
10 août 2007
-
Merci pour ce code.
Pour rebondir, sur le commentaire de Bidou. Je dirais que le fichier XML config généré par VB.net est simple à créer et à utiliser dans la source mais à mon sens pas simple pour une personne extérieur: le code des paramétres est mélangé avec d'autres infos, et je ne crois pas qu'il soit possible de rajouter des commentaires sur les paramètres (ce que permet le fichier ini).
pokeswell
Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
11 janvier 2008
-
Merci beaucoup, vous venez de me sauver des heures!
pouda
Messages postés
265
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2014
-
La source a été créée en 2003, ce qui explique certainement le fait de l'utilisation de l'extension INI.
Il est clair qu'à l'heure actuelle, la source est devenue obsolète, tous fichiers INI devant être, à mon humble avis, remplacer par un fichier XML.

je ne suis pas tout a fait d'accord..car le fichier ini est nettement plus simple a editer en worpad pour des utilisateurs novice...apres effectivement le Xml reste le plus performant
circular
Messages postés
19
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2010
-
Il manque une fonction pour lire une section entière... que voilà. Cela permet notamment de récupérer la liste des clés.

''' <summary>Retrieves a dictionary of an entire section in the INI file.</summary>
''' <returns>Returns a Dictionary with all available keys.</returns>
Public Function GetSection(ByVal SectionName As String) As Dictionary(Of String, String)
GetSection = New Dictionary(Of String, String)
Dim Buffer(MAX_ENTRY) As Byte
Dim BuffStr As String
Dim PrevPos As Integer = 0
Dim Length As Integer
Try
Length = GetPrivateProfileSection(SectionName, Buffer, MAX_ENTRY, Filename)
Catch
Exit Function
End Try
If Length > 0 Then
BuffStr = System.Text.Encoding.Default.GetString(Buffer)
Length = 0
PrevPos = -1
Do
Length = BuffStr.IndexOf(ControlChars.NullChar, PrevPos + 1)
If Length - PrevPos 1 OrElse Length -1 Then Exit Do
Dim Entry As String = BuffStr.Substring(PrevPos + 1, Length - PrevPos)
Dim PosEquals As Integer = Entry.IndexOf("="c)
If PosEquals = -1 Then
GetSection.Add(Entry, "")
Else
GetSection.Add(Entry.Substring(0, PosEquals), Entry.Substring(PosEquals + 1))
End If
PrevPos = Length
Loop
End If
End Function
circular
Messages postés
19
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2010
-
Il faut aussi rajouter la référence à la fonction GetPrivateProfileSection, comme ceci :

<DllImport("KERNEL32.DLL", EntryPoint:="GetPrivateProfileSectionA", SetLastError:=False, CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GetPrivateProfileSection(ByVal lpAppName As String, ByVal lpReturnedString As Byte(), ByVal nSize As Integer, ByVal lpFileName As String) As Integer
End Function
circular
Messages postés
19
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2010
-
J'ai trouvé un bug dans la fonction GetSectionNames, et j'ai recopié ce bug dans la fonction GetSection. Il faut remplacer

BuffStr.Substring(PrevPos + 1, Length - PrevPos)

par

BuffStr.Substring(PrevPos + 1, Length - PrevPos - 1)

dans les deux fonctions, sinon il y a un caractère zéro inclus à la fin de la chaine de caractère.
ronanry
Messages postés
190
Date d'inscription
lundi 25 novembre 2002
Statut
Membre
Dernière intervention
22 décembre 2009
-
Petite erreur detectée :
Public Function ReadByteArray(ByVal Section As String, ByVal Key As String, ByVal Length As Integer) As Byte()
If Length > 0 Then
Try
Dim Buffer(Length - 1) As Byte
If GetPrivateProfileStruct(Section, Key, Buffer, Buffer.Length, Filename) = 0 Then
Return Nothing
Else
Return Buffer
End If
Catch
Return Nothing
End Try Else '<cette partie n'existait pas et donc rien n'etait retourné si length0
Return Nothing
End If
End Function
cs_janhsh
Messages postés
32
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
24 janvier 2015
-
Le fichier ZIP est invalide
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31 -
fichier zip parfaitement valide pour moi