cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007
-
18 avril 2006 à 23:06
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007
-
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.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 avril 2006 à 05:02
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
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007 19 avril 2006 à 07:26
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
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 19 avril 2006 à 08:28
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.
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007 19 avril 2006 à 08:38
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.