Fonction permettant de lire une clé dans un fichier INI
# 0000000114
ajouté le 02/12/2004 19:24:48 et modifié le 02/12/2004
consulté 10709 fois
Niveau
initié
La fonction GetPPS (pour Get Private Profile String) permet de lire façilement une clé dans une section d'un fichier INI. Les fichiers INI restent un moyen simple de paramétrer un certain nombre d'options dans un fichier texte à l'extérieur de l'application.
Cette toute petite fonction illustre l'appel d'une fonction de l'API windows qui rend une chaine de caractère. En initialisant lcBuffer on réserve de la place et on passe l'adresse dans l'appel de la fonction. La fonction de l'API rend une chaine qui se termine par un zéro binaire (convention de C) mais rend aussi le nombre de caractères de la chaine non compris le zéro, d'ou l'importance de l'utilisation de Left() dans l'expression retournée.
Code source :
* --- Création d'un fichier INI pour tester la fonction GetPPS local lcFichIni
lcFichIni = addbs( sys(2023) ) + sys(2015) + '.ini' settextmergeto ( m.lcFichIni ) textnoshowtextmerge [Chemin]
root = C:\Something\Application\
data = data\
prog = source\ [Param] Preview = .T. ENDTEXT settextmergeto
* --- Test de la fonction
? GetPPS( m.lcFichIni, "Chemin", "root" , "" )
? GetPPS( m.lcFichIni, "Chemin", "Backup", "Non prévu" )
? GetPPS( m.lcFichIni, "Chemin", "prog" , "Non prévu" )
? evaluate( GetPPS( m.lcFichIni, "Param" , "Preview", ".F." ))
* --- Ménage erase ( m.lcFichIni )
endproc
*/------------------------------------------------------------------------------ function GetPPS && Get Private Profile String */------------------------------------------------------------------------------
lparam ; && Retourne la valeur (string) d'une clé dans un fichier INI
tcFicIni, ; && Nom (chemin complet) du fichier INI
tcSection, ; && Section dans laquelle on recherche la clé
tcCle, ; && Clé recherchée
tcDefaut && Valeur par défaut si fichier INI ou clé non trouvé
declareinteger GetPrivateProfileString in win32api as GetPrivateString ; string Section ,; string Clef ,; string Defaut ,; string @ buffer ,; long BufSize ,; string IniFile
Cette fonction m'a permis de mettre tous les chemins d'accès et d’affecter de valeurs par défaut de certaines variables selon utilisateur.
EmanuelL
le 07/12/2004, EmanuelL a écrit : PS : dans un fichier.INI.
EmanuelL
le 25/03/2009, steber a écrit : Merci. Ca m'a permis de trouver directement une manière efficace de lire dans un fichier INI. Comme j'avais aussi besoin de pouvoir écrire la valeur d'une clé dans une section d'un fichier INI, j'ai écrit une fonction similaire. La voici au cas où ça pourrait servir à quelqu'un. steber
function WritePPS && Write Private Profile String lparam ; && Ecrit la valeur (string) d'une clé dans un fichier INI tcFicIni, ; && Nom (chemin complet) du fichier INI tcSection, ; && Section dans laquelle on recherche la clé tcCle, ; && Clé recherchée tcValeur && Valeur à positionner
declare integer WritePrivateProfileString in win32api as WritePrivateString ; string Section ,; string Clef ,; string Valeur ,; string IniFile
Merci Robert,
Cette fonction m'a permis de mettre tous les chemins d'accès et d’affecter de valeurs par défaut de certaines variables selon utilisateur.
EmanuelL