Modifier une valeur dans un fichier

popseyes63 Messages postés 3 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 18 octobre 2006 - 17 oct. 2006 à 15:03
popseyes63 Messages postés 3 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 18 octobre 2006 - 18 oct. 2006 à 14:25
Salut,
Voici ma question :
Je souhaite dans un premier temps lire un fichier "type ini" dont voici l'architecture :
[B0]
[T 0]
P0=10 50.274
P1=-6.500 0.950
P2=-8.000 1.900
P3=-10.000 3.166
P4=-10.500 6.330
P5=-9.000 9.493
P6=-3.500 15.822
P7=-1.000 22.152
P8=2.000 31.645
P9=8.500 49.111
P10=30.000 49.758
/T
/B0


[B1]
[T0]
P0=10 50.274
P1=-3.300 0.950
P2=-5.500 1.900
P3=-7.000 3.166
P4=-8.500 6.330
P5=-6.500 9.493
P7=1.500 22.152
P8=4.500 31.645
P9=11.000 49.111
P10=36.000 49.758
/T0
/B1

Pour l'instant j'arrive à lire tout le fichier, extraire les données numériques.
Par contre j'ai un soucis pour remplacer les données que je souhaite modifier.
Pb sur les mélanges d'accés au fichier en lecture et ecriture.
Merci de votre aide.

4 réponses

alosamoelle Messages postés 129 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 23 mai 2009 1
17 oct. 2006 à 15:13
pour lire un fichier ini avec une structrure
[B0]
P0=10 50.274

Met dans un module

Option Explicit


Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
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
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


 


Function LireINI(Entete As String, Variable As String) As String
    Dim Retour As String
   ' temp = ""
    fichier = App.Path & "" & App.EXEName & ".ini"
    Retour = String(255, Chr(0))
    LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), fichier))
'temp = LireINI
End Function


Function EcrireINI(Entete As String, Variable As String, Valeur As String) As String
    Dim writeini
    fichier = App.Path & "" & App.EXEName & ".ini"
    writeini = WritePrivateProfileString(Entete, Variable, Valeur, fichier)
End Function

ensuite pour lire tu fais : valeur = LireINI("B0", "P0")
et pour ecrire : ret = EcrireINI("B0", "PO", "letextequetuveuxmettre")

Voila si vraiment tu veux mettre le [T 0] en plus il faut modifier un peut dans le module
Bon courage
0
popseyes63 Messages postés 3 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 18 octobre 2006
17 oct. 2006 à 15:24
En effet, je suis contraint d'utiliser le TO ce qui ne me permet plus de distinguer les sections BO, B1,...
Je connais les fonctions de lecture de fichier ini, type [Section], clé mais la j'ai du mal...
Je continue mes recherches.
Merci...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 oct. 2006 à 18:14
" ...Voila si vraiment tu veux mettre le [T 0] en plus il faut modifier un peut dans le module ..."

Normalement non, rien à modifier, juste remplacer B0 par T0 dans l'appel des fonctions.

D'ailleurs avec B0 je doute que ça marche. Pour un fichier ini classique les sections B0, /T0, /B0, B1, /T1 et /B1 (au sens ini du terme section)  sont considérées comme vide.
Seules les sections T0 et T1 seront reconnue pleines

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
popseyes63 Messages postés 3 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 18 octobre 2006
18 oct. 2006 à 14:25
En fait comme vous vous en doutez le fichier utilisé n'est pas classique. Il ressemble à un fichier ini mais il y a quelques différences. J'ai oublié de préciser que des clés figure entre la section B0 et T0 et entre la section B1T0.. ce qui m'empeche de distinguer dans mon fichier les clés P1, P2....des sections B0 et B1.
J'ai besoin d'une application pour modifier les paramètres P0 à P10 dans les sections B0 et B1.
merci de votre aide...
0
Rejoignez-nous