cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 4 oct. 2012 à 13:34
fichier zip parfaitement valide pour moi
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 janvier 2015 4 oct. 2012 à 12:45
Le fichier ZIP est invalide
ronanry
Messages postés190Date d'inscriptionlundi 25 novembre 2002StatutMembreDernière intervention22 décembre 2009 21 juil. 2011 à 22:28
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
circular
Messages postés17Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention27 mars 2010 20 oct. 2009 à 19:35
J'ai trouvé un bug dans la fonction GetSectionNames, et j'ai recopié ce bug dans la fonction GetSection. Il faut remplacer
dans les deux fonctions, sinon il y a un caractère zéro inclus à la fin de la chaine de caractère.
circular
Messages postés17Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention27 mars 2010 18 oct. 2009 à 19:19
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és17Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention27 mars 2010 18 oct. 2009 à 19:18
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
pouda
Messages postés264Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention27 octobre 2014 8 juin 2008 à 07:36
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
pokeswell
Messages postés5Date d'inscriptionmercredi 29 mars 2006StatutMembreDernière intervention11 janvier 2008 11 janv. 2008 à 05:39
Merci beaucoup, vous venez de me sauver des heures!
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007 6 mars 2007 à 17:10
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).
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 14 nov. 2006 à 20:50
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_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 14 nov. 2006 à 19:24
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_ketchoupi
Messages postés14Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention23 novembre 2008 20 sept. 2006 à 18:20
Un grand merci cette petite class ma fait gagner un temps precieux
cs_Namiro
Messages postés3Date d'inscriptionmardi 25 juillet 2006StatutMembreDernière intervention 6 août 2006 6 août 2006 à 20:25
Mais de rien EvilGost, on est la pour s'entraider, c'est bien normal.
EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 6 août 2006 à 19:00
Pas bete Namiro, j'avais pas fait le rapprochement avec DEFault VALue...merci a toi :)
cs_Namiro
Messages postés3Date d'inscriptionmardi 25 juillet 2006StatutMembreDernière intervention 6 août 2006 6 août 2006 à 16:12
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.
cs_Namiro
Messages postés3Date d'inscriptionmardi 25 juillet 2006StatutMembreDernière intervention 6 août 2006 6 août 2006 à 15:51
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
EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 4 août 2006 à 11:22
excellent, merci.
mais à quoi sert "DefVal" dans le ReadString?
pbocsak
Messages postés20Date d'inscriptiondimanche 15 janvier 2006StatutMembreDernière intervention22 novembre 2007 30 juil. 2006 à 22:26
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?
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 14 juil. 2006 à 19:25
Génial !
Code simple, bien fait ... en gros rien à redire
Merci beaucoup, ce code va me faire sauver beaucoup de temps ^_^
PY
lebelm
Messages postés17Date d'inscriptionmercredi 25 décembre 2002StatutMembreDernière intervention11 juin 2006 4 juin 2006 à 05:16
Super, on aurait pas pu avoir plus simple. Rien de plus à ajouter à part un gros merci.
sousoulebarbu
Messages postés101Date d'inscriptionmercredi 27 juillet 2005StatutMembreDernière intervention11 janvier 2009 11 avril 2006 à 22:53
Super code, simple, utile et efficace.
Bravo
GAETANDAUSSY
Messages postés1Date d'inscriptionjeudi 23 janvier 2003StatutMembreDernière intervention24 janvier 2006 24 janv. 2006 à 10:12
La meilleure classe du genre de ce site.
Y a vraiment rien à redire, c'est tout simplement du travail de pro. Merci pour ça!!!
JBE57
Messages postés2Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention17 août 2006 28 sept. 2004 à 16:06
Géant! juste ce qu'il me falait!
En effet, dur dur, le passage vers VB.net!
asem67
Messages postés145Date d'inscriptionmardi 3 septembre 2002StatutMembreDernière intervention24 février 2008 29 août 2004 à 01:55
c'est cool c'est ce que je cherchais
dur le passage en VB.net !!!!!
mais ça viendra comme le vb6
skowee59
Messages postés78Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention29 juin 2006 19 avril 2004 à 13:55
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.
@+
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 19 avril 2004 à 12:36
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és78Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention29 juin 2006 19 avril 2004 à 11:50
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és27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 16 avril 2004 à 16:53
Là c'est plus possible.
Valeur=INI.ReadString("TAG", "KEY", "")
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 16 avril 2004 à 09:36
oui et pour la lecture ?
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 16 avril 2004 à 08:33
Merci Bill.
cs_666Ange
Messages postés19Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 2 mars 2009 16 avril 2004 à 02:57
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 ...
cs_666Ange
Messages postés19Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 2 mars 2009 16 avril 2004 à 02:49
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
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 22 janv. 2004 à 09:49
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
sebaznar
Messages postés15Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 8 juin 2005 10 juin 2003 à 17:05
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ô
ronanry
Messages postés190Date d'inscriptionlundi 25 novembre 2002StatutMembreDernière intervention22 décembre 2009 15 janv. 2003 à 18:33
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....
4 oct. 2012 à 13:34
4 oct. 2012 à 12:45
21 juil. 2011 à 22:28
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
20 oct. 2009 à 19:35
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.
18 oct. 2009 à 19:19
<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
18 oct. 2009 à 19:18
''' <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
8 juin 2008 à 07:36
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
11 janv. 2008 à 05:39
6 mars 2007 à 17:10
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).
14 nov. 2006 à 20:50
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.
14 nov. 2006 à 19:24
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
20 sept. 2006 à 18:20
6 août 2006 à 20:25
6 août 2006 à 19:00
6 août 2006 à 16:12
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.
6 août 2006 à 15:51
4 août 2006 à 11:22
mais à quoi sert "DefVal" dans le ReadString?
30 juil. 2006 à 22:26
14 juil. 2006 à 19:25
Code simple, bien fait ... en gros rien à redire
Merci beaucoup, ce code va me faire sauver beaucoup de temps ^_^
PY
4 juin 2006 à 05:16
11 avril 2006 à 22:53
Bravo
24 janv. 2006 à 10:12
grand merci
chdauss
11 mai 2005 à 00:10
Y a vraiment rien à redire, c'est tout simplement du travail de pro. Merci pour ça!!!
28 sept. 2004 à 16:06
En effet, dur dur, le passage vers VB.net!
29 août 2004 à 01:55
dur le passage en VB.net !!!!!
mais ça viendra comme le vb6
19 avril 2004 à 13:55
C ça qd on est pressé ;-) lol
Merci pour l'info.
@+
19 avril 2004 à 12:36
19 avril 2004 à 11:50
Faut-il ajouter une référence pour pouvoir s'en servir ?
D'avance, merci.
16 avril 2004 à 16:53
Valeur=INI.ReadString("TAG", "KEY", "")
16 avril 2004 à 09:36
16 avril 2004 à 08:33
16 avril 2004 à 02:57
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 ...
16 avril 2004 à 02:49
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
22 janv. 2004 à 09:49
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
10 juin 2003 à 17:05
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ô
15 janv. 2003 à 18:33
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....