Lire/ecrire/supprimer dans un fichier ini grâce aux apis windows

Soyez le premier à donner votre avis sur cette source.

Vue 17 616 fois - Téléchargée 2 289 fois

Description

Comme son l'indique, ce code permet de lire, écrire et supprimer des valeurs dans un fichier INI, et ceci le plus simplement du monde grâce aux APIs Windows

Source / Exemple :


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

Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
    "WritePrivateProfileSectionA" ( _
     ByVal lpAppName As String, _
     ByVal lpString As Any, _
     ByVal lpFileName As String) As Long

'Fonction pour lire une valeur dans un fichier INI
Function INIRead(Entete As String, Variable As String, Optional Fichier As String) As String
    Fichier = IIf(Fichier = "", App.Path & "\" & App.EXEName & ".ini", Fichier)
    INIRead = String(255, Chr(0))
    INIRead = Left$(INIRead, GetPrivateProfileString(Entete, ByVal Variable, "", INIRead, Len(INIRead), Fichier))
End Function

'Fonction pour écrire une valeur dans un fichier INI
'La section spécifiée est créée automatiquement si elle n'existe pas déjà
Function INIWrite(Entete As String, Variable As String, Valeur As String, Optional Fichier As String) As String
    Fichier = IIf(Fichier = "", App.Path & "\" & App.EXEName & ".ini", Fichier)
    INIWrite = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
End Function

'Fonction pour supprimer une valeur dans un fichier INI
Function INIDelete(Entete As String, Variable As String, Optional Fichier As String) As String
    Fichier = IIf(Fichier = "", App.Path & "\" & App.EXEName & ".ini", Fichier)
    INIDelete = WritePrivateProfileString(Entete, Variable, 0&, Fichier)
End Function

'Fonction pour supprimer une section dans un fichier INI
Function INIDeleteSection(Entete As String, Optional Fichier As String) As String
    Fichier = IIf(Fichier = "", App.Path & "\" & App.EXEName & ".ini", Fichier)
    INIDeleteSection = WritePrivateProfileSection(Entete, 0&, Fichier)
End Function

Conclusion :


J'ai mis cette source car j'ai remarqué qu'il y avait déjà des sources similaires mais plus complexes car n'utilisant pas les API...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
91
Date d'inscription
mercredi 6 novembre 2002
Statut
Membre
Dernière intervention
20 mars 2009

Merci!
Messages postés
16
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
31 mars 2011

Merci pour ce code Trés utile, simple efficace!

ciao
Messages postés
101
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
1 novembre 2007

Simple, Efficace, toujours util.

On ce rapelle pas toujours avec exactitude les paramètres d'une fonction dans une api.

La un petit module que l'on rajoute et on peu ajouter, modifier, supprimer, l'intérieur d'un fichier ini.

Sans vouloir être méchant certaine personne disans "y marche même pas chez moi, c'est de la gr..." ferais mieux d'apprendre a programmer avant de mettre ce genre de commentaire.

Cependant il est regretable que ces fonctions ne gère pas les erreurs correctement et que les types de données ne correspondent pas a ceux de l'api qu'il utlise.

Par exemple

# 'Fonction pour écrire une valeur dans un fichier INI
# 'La section spécifiée est créée automatiquement si elle n'existe pas déjà
# Function INIWrite(Entete As String, Variable As String, Valeur As String, Optional Fichier As String) As String
# Fichier IIf(Fichier "", App.Path & "" & App.EXEName & ".ini", Fichier)
# INIWrite = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
# End Function


# 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


Il est regrettable que le type de donnée renvoyé est une String au lieu d'un Long, et il aurais peut etre été plus judicieux de mettre un booleen.
Messages postés
126
Date d'inscription
vendredi 19 septembre 2003
Statut
Membre
Dernière intervention
20 novembre 2007

salut skaleta !!!
je ovis que personne ne te reponds !

alors tu connais les fichiers ini, ils sont composés de section, de clés, et de valeurs.
exemple (le fichier s'appelle 'essai.ini' :

----------
[SECTION]
cle=valeur
----------

et bien avec ce prog, pour lire la valeur, faut faire :

-------------
Dim reponse as string
reponse = INIRead( "SECTION" , "cle" , "essai.ini" )
-------------

et reponse aura pour valeur "valeur".
t'as compris pour lire ?

pour ecrire c'est pareil :

rien = INIWrite( "SECTION, qui sera crée si existe pas", "clé", "valeur" , "essai.ini"

"rien" ne sert a rien, mais vu que c'est une fonction, ça renvoie une valeur, donc faut mettre qqch !

pour supprimer rien de plus simple :

1) supprimer une clé
rien = INIDelete( "SECTION" , "cle" , "essai.ini")

2) supprimer une section :
rien = INIDeleteSection( "SECTION" , "essai.ini")

voila voila !!

j'espere que t'a compris !!

en tout cas moi j'utilise cette source des que j'ai des fichiers ini, donc merci Chrystalyst !!


salut !

Gagou
Messages postés
4
Date d'inscription
jeudi 30 décembre 2004
Statut
Membre
Dernière intervention
8 février 2006

Simplement, merçi :) 10/10
Cro fort !
Afficher les 27 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.