Écriture/lecture de fichiers INI

daniellapointe01 Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 27 octobre 2003 - 1 oct. 2003 à 21:16
_DoOmy_ Messages postés 15 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 17 septembre 2006 - 2 avril 2006 à 20:37
Bonjour.

J'utilise l'écriture et la lecture dans les fichiers INI.
J'ai un fichier 02.ini qui enregistre les options choisies à partir de checkbox.

Je vous laisse ci-dessous un extrait du code lors de l'appuis sur le bouton Appliquer :

If Option01 = Check1 Then
Else 'seulement si on a modifié des options
Open "./ini/02.ini" For Input As #5 'on lit le fichier
For b = 1 To 1
Input #5, Fichier01
Next
For b = 2 To 2
Input #5, Fichier08
Next
For b = 3 To 3
Input #5, Fichier09
Next
For b = 4 To 4
Input #5, Fichier10
Next
For b = 5 To 5
Input #5, Fichier11
Next
For b = 6 To 6
Input #5, Fichier12
Next
For b = 7 To 7
Input #5, Fichier13
Next
For b = 8 To 8
Input #5, Fichier14
Next
For b = 9 To 9
Input #5, Fichier15
Next
Close #5
Open "./ini/02.ini" For Output As #6 'on refait le fichier
For b = 0 To 0
Print #6, Check1.Value
Next
For b = 1 To 1
Print #6, Fichier01
Next
For b = 2 To 2
Print #6, Fichier08
Next
For b = 3 To 3
Print #6, Fichier09
Next
For b = 4 To 4
Print #6, Fichier10
Next
For b = 5 To 5
Print #6, Fichier11
Next
For b = 6 To 6
Print #6, Fichier12
Next
For b = 7 To 7
Print #6, Fichier13
Next
For b = 8 To 8
Print #6, Fichier14
Next
For b = 9 To 9
Print #6, Fichier15
Next
Close #6
Option01 = Check1.Value
Options = Options + 1 'Gestion du pluriel
End If

Ce même code est reproduit pour chaque checkbox.
Il y a 10 lignes dans le fichier 02.ini.
Le code ne fonctionne très mal, surtout à cause de certaines erreurs lors de l'enregistrement, et j'ai vérifié et je n'ai rien trouvé.

N'y a-t-il pas moyen de faire ça plus court et plus rapidement ?

Merci d'avance de vos réponces.

Cordialement
Daniel

11 réponses

pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
2 oct. 2003 à 01:47
c'est pas un fichier ini ca!!!
c un fichier tous court

les fichier ini ont une entete c plus facile a gerer genre :

[Couleur]
voiture=bleue
slip=rouge

voila une fonction pour t'aider a lire et ecrire dans un fichier ini :

'dans un module
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Function LireINI(Entete As String, Variable As String) As String
Dim Retour As String
fichier = App.Path & "" & App.EXEName & ".ini"
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), fichier))
End Function

Function EcrireINI(Entete As String, Variable As String, Valeur As String) As String
fichier = App.Path & "" & App.EXEName & ".ini"
WriteINI = WritePrivateProfileString(Entete, Variable, Valeur, fichier)
End Function

voila apres c pas compliquer :

pour ecrire genre dans la section couleur, la couleur de la variable voiture:
EcrireINI "Couleur", "voiture", "rouge"

pour la lire :
Couleur_Voiture = LireINI("couleur", "voiture")

Voila!!! c plus claire, plus rapide, plus facile a gerer, et plus pro surtout!!!!

Tu peu entrer autant de section que tu veu, et autant de variable dans la section!!!!!

Si tu as besoin d'aide!!!!??? vas y!!!
0
daniellapointe01 Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 27 octobre 2003
2 oct. 2003 à 21:56
Voilà.

Je reçois une erreur lors de l'éxécution de :

licenseTo = LireINI("general", "nom", "./ini/config.ini")

j'ai VB en anglais, et cela dit :

Wrong number or argument or invalid property assignment

Bon cela veut dire qu'il y a une erreur. voici mon module :

Option Explicit

Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName$, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName$) As Long
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpdirectory As String, ByVal nShowCmd As Long) As Long
Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Function LireINI(Entete As String, Variable As String) As String
Dim Retour As String
Fichier = App.Path & "" & App.EXEName & ".ini"
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
End Function

Function EcrireINI(Entete As String, Variable As String, Valeur As String) As String
Fichier = App.Path & "" & App.EXEName & ".ini"
WriteIni = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
End Function

Public Sub JouerSon(Fichier As String)
mciExecute ("play " & Fichier)
End Sub

Public Function FileExists(stFichier As String) As Boolean
FileExists = (Dir$(stFichier, vbHidden Or vbReadOnly Or vbSystem) <> vbNullString)
End Function

Ce dernier permet de vérifier l'existance d'un fichier ou d'un dossier, de jouer un son et j'ai finalement ajouté la fonction d'écriture/lecture de fichiers INI.

Merci d'Avance de m'Expliquer la raison de cette erreur.

Cordialement
Daniel
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
2 oct. 2003 à 23:30
tu as pas lu mon exemple :

Couleur_Voiture = LireINI("couleur", "voiture")

essaie plutot ca, la tu lit et tu donne la reponse!!!!! en mm tps "./ini/config.ini"
licenseTo = LireINI("general", "nom")

pour lire
licenseto=lireini("section","variable a lire")

pour ecrire
ecrireini("section", "variable", donné a ecrire")
0
daniellapointe01 Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 27 octobre 2003
3 oct. 2003 à 00:04
et où indique-t-on dans quel fichier il doit écrire et lire ? il n'est pas décodeur, il ne fera pas une recherche pour moi, il faut lui indiquer, non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
3 oct. 2003 à 02:19
et ben non il faut pas de decodeur lol!!!

Si tu avauit regarder les 2 fonctions d'ecriture et de lecture ini, tu aurais vu que le fichier est stipuler

app.path & "" app.exename & ".ini"
ca veu dire qu'il ouvre par defaut le fichier de ton soft.ini qui se situe dans le dossier de ton executable.

En bref si ton projet se trouve dans c:\mon soft\projet1.vbp
alos le fichier ini sera "c:\mon soft\projet1.ini"

Si tu compile le soft dans "c:\program files\mon soft\soft.exe"
l'ini sera "c:\program files\mon soft\soft.ini"

Mais si tu veu tu peu modifier tous ca et mettre ton ini ou tu veu et l appeler comme tu veu!!!
Enfin voila!!

Ps: je cherche qq betatesteur (c'est juste pour tester le prog et faire un rapport des eventuelle bug et difficulté rencontré...) pour mon soft!!! Si le coeur t'en dit, c'est un soft pour creer des galleries de photo html..
0
daniellapointe01 Messages postés 8 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 27 octobre 2003
3 oct. 2003 à 02:43
Cela m'intéresserait peut-être de t'aider, en guise de remerciment de ton aide. Mais pas en ce moment, je dois quitter, je n'ai même pas le temps de retester ton code.

Je ferai plutard et je te recontacterai sur ce forum.

Merci encore de ton aide.

Cordialement
Daniel
0
the_fonzarelli Messages postés 5 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 16 juillet 2004
16 juil. 2004 à 08:44
J'étais pas venu sur la discussion pour ça mais tu viens de m'éclairer un peu sur le fonctionnement des fichiers .ini alors un grand merci à toi !

the fonzarelli !
0
pegasustek Messages postés 10 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 20 avril 2008
13 juil. 2005 à 12:29
J'ai juste un souci avec le code pcpunch. la définition de la variable en "Any" n'est pas reconnu. Est-ce un Pb de version et j'ai cherché dans les références mais pas trouvé. C'est dommage car la méthode est simple pour un novice comme moi
0
ooly2001 Messages postés 43 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 9 décembre 2011
10 août 2005 à 16:58
Super ton code !

Merci de ton aide

2 secondes de recherche sur VB et a peu pres 3 minutes pour adapter le code
0
_DoOmy_ Messages postés 15 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 17 septembre 2006
2 avril 2006 à 20:37
Avec tes fonction j'ai un pb: si je les appliques a deux fichiers de meme nom mais de chemin différents, écrire dan l'un revient a écrire dans l'autre aussi
a tu une solution???
0
_DoOmy_ Messages postés 15 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 17 septembre 2006
2 avril 2006 à 20:37
Avec tes fonction j'ai un pb: si je les appliques a deux fichiers de meme nom mais de chemin différents, écrire dan l'un revient a écrire dans l'autre aussi
a tu une solution???
0
Rejoignez-nous