Lecture de fichier INI avec GetPrivateProfileString [Résolu]

cs_M51 64 Messages postés dimanche 20 novembre 2005Date d'inscription 10 août 2007 Dernière intervention - 18 avril 2006 à 23:06 - Dernière réponse : cs_M51 64 Messages postés dimanche 20 novembre 2005Date d'inscription 10 août 2007 Dernière intervention
- 19 avril 2006 à 08:38
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
Afficher la suite 

4 réponses

cs_M51 64 Messages postés dimanche 20 novembre 2005Date d'inscription 10 août 2007 Dernière intervention - 19 avril 2006 à 08:38
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 19 avril 2006 à 05:02
0
Utile
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]
cs_M51 64 Messages postés dimanche 20 novembre 2005Date d'inscription 10 août 2007 Dernière intervention - 19 avril 2006 à 07:26
0
Utile
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.
crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 19 avril 2006 à 08:28
0
Utile
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.

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.