Lecture de fichier INI avec GetPrivateProfileString

[Résolu]
Signaler
Messages postés
63
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
10 août 2007
-
Messages postés
63
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
10 août 2007
-
Salut,

J'ai le code suivant pour lire un fichier INI

'API qui permet de récupérer les infos dans un fichier suivant un champ et une clé dans ce champ
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


'Récupère les informations dans un fichier avec le champ [] et une clef XXXX=
Public Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String

Dim strReturn As String
strReturn = String(255, 0)
GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
End Function


'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
Mon problème est que lorsque le contenu commence ou se termine par des espaces ce code ne me retourne pas les espaces.
ex: code entrée dans un fichier ini: " code blblblblablaalbalab "
il me retourne "code blblblblablaalbalab"

J'ai essayé de trouver d'autre code ils ont le même type de problème.

Une idée. merci d'avance
A voir également:

4 réponses

Messages postés
63
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
10 août 2007

Je viens de regarder la définition chez Microsoft, tous les caractères en dessous du code 32 sont ignorés. J'ai malheureusement besoin de certain caractère.
Je vais donc faire autrement.

Merci de m'avoir répondu.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
les espaces ne sont pas enregistrés.
s'ils te sont utiles, à toi de commencer et terminer ta chaîne pas un autre caractère.

exemple :


Public Function LireIni(Fichier As String, Section As String, Libelle As String) As String
Dim Retour As String: Retour = String (512, Chr$(0))
LireIni = Left$(Retour, GetPrivateProfileString(Section, ByVal Libelle, "", Retour, Len(Retour), Fichier) - 1)
LireIni = Right$(LireIni, Len (LireIni) - 1)
End Function
'
'
Public Sub EcrireIni(Fichier As String, Section As String, Libelle As String, ByVal Valeur As String)
Valeur = Chr$(30) & Valeur & Chr$(30)
Call WritePrivateProfileString(Section, Libelle, Valeur, Fichier)
End Sub


<small> Coloration
syntaxique automatique [AFCK]</small>


++
PCPT [AFCK]
Messages postés
63
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
10 août 2007

Ils sont bien enregistrés, car lorsque je visualise le fichier ini avec le bloc note ils sont là.
Sinon ton idée est effectivemment une solution mais c'est dommage.

Merci de ta réponse.

Si quelqu'un d'autre à une idée qu'il fasse signe.
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Ce n'est pas que les espaces ne sont pas enregistrés, c'est que les fonctions API gérant les fichiers INI les suppriment !
Selon la définition des fichiers INI par Crosoft, les espaces sont non significatif en début et en fin de valeur.
Deux options possibles :
1- Te faire tes propres fonctions de Lecture/Ecriture dans un fichier INI
2- Mettre ces valeurs avec des caractères avant et après : Des guillemets par exemple.