Textbox multiline

Signaler
Messages postés
170
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
13 juin 2010
-
Messages postés
170
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
13 juin 2010
-
marcod59

Bonjour à tous,

Mon prog contient plusieurs text(index) que je voudrais mettre à jour régulièrement avec un bouton lorsque j'ai modifié le texte à l'intérieur d'une des text(index). Si j'utilise un fichier .ini ça fonctionne mais le problème et que si j'utilise multiline pour avoir plusieurs ligne je n'arrive pas à relire toutes les lignes. J'écrit dans le fichier .ini mais je ne lit pas plus d'une ligne. Voici un morceau du fichier .ini :
[comment1]


com0= essai
com1=
com2=
com3=
com4=
Voilà le résultat après écriture :
[comment1]


com0= essai
essai2
com1=
com2=
com3=
com4=
la ligne s'inscrit sous la variable et je ne parvient pas à la lire.

Comment faire pour la lire ou faut-il utiliser uneautre méthode.
Merci d'avance
@+++

3 réponses

Messages postés
1352
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2008
1
montres le code de lecture et écriture !!



ca doit être un problème de retour chariot
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut
En effet, les items ne forment qu'une seule ligne.
Ce que tu peux faire, c'est remplacer les retours de lignes vbCrLf par un caractères standard, comme | par exemple, un caractère que tu es sûr de ne pas saisir toi même.
Au moment de sauver tes données, tu fais :
laDonnéeFichierINI = Replace(TextBox(x).Text, vbCrLf, "|")
comme ça le contenu tiendra sur une seule ligne
Et quand tu relis :
TextBox(x).Text = Replace(laDonnéeFichierINI, "|", vbCrLf)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
170
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
13 juin 2010

marcod59
Voilà le code
Dans la form :
pour la lecture
Text12(Index).Text = GetIni(App.Path & "\config.ini", "comment1", comm)
pour l'écriture
comm = WriteIni(App.Path & "\config.ini", "comment1, comm)

Dans un module :
Public fichname, i, ind As String
Public couleur As String
Public comm As String
Public indm As String
Public mess As String
Public cl As Long




Public Function GetFile(Filename As String)
' renvoie le contenu du fichier "filename" sous forme d'une seule chaine de caractères
Dim a As Long
a = FreeFile()
Open Filename For Input As #a
GetFile = Input(LOF(a), a)
Close #a
End Function


Public Function GetFileExist(Filename As String) As Boolean
' renvoie true si le fichier "filename" existe et false sinon
On Error GoTo Erreur
FileLen (Filename)
GetFileExist = True
Exit Function
Erreur:
GetFileExist = False
End Function


Public Function simplifie(texte As String)
' supprime les retours à la ligne trop nombreux ( lorsqu'il y a 3 retours à la ligne,
' on n'en laisse que 2)
Dim retour As String
Dim l As String
retour = Chr(13) & Chr(10)
l = InStr(texte, retour & retour & retour)
While l <> 0
texte = Left(texte, l + 1) & Mid(texte, l + 4)
l = InStr(texte, retour & retour & retour)
Wend
simplifie = texte
End Function


Public Function supprime(texte As String)
'supprime tous les retours à la ligne placés en fin de chaine
Dim retour As String
Dim l As String
retour = Chr(13) & Chr(10)l Mid(texte, Len(texte) - 1) retour
While l
texte = Mid(texte, 1, Len(texte) - 2)l Mid(texte, Len(texte) - 1) retour
Wend
supprime = texte
End Function


Public Function SetFile(Filename As String, texte As String)
' écrit la chaine de caractère "texte" dans le fichier "filename" (écrase l'ancien)
Dim a As Long
a = FreeFile()
Open Filename For Output As #a
Print #a, supprime(simplifie(texte))
Close #a
End Function


Public Function GetIni(Filename As String, Contener As String, Variable As String)
'renvoie la valeur de la variable "variable" placée dans le conteneur "contener"
' renvoie la chaine vide si la variable n'a pas été trouvé
Dim test As Boolean, _
t1 As Boolean, _
t2 As Boolean, _
ligne As String, _
a As Long, _
retour As String
retour = Chr(13) & Chr(10)
' si le fichier n'existe pas
If Not GetFileExist(Filename) Then
GetIni = ""
Exit Function
End If
' ouvertur du fichier
a = FreeFile()
Open Filename For Input As #a
' recherche du conteneur
test = True
t2 = True
While test
If Not EOF(a) Then
'lecture de la ligne
Line Input #a, ligne
'test si "[container]" est inclus en début de ligne
' (avec des espaces possible à sa gauche)
t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
End If
test = (Not EOF(a)) And t2
Wend
' si le conteneur n'a pas été trouvé
If EOF(a) And t2 Then
GetIni = ""
Exit Function
End If
' recherche la variable
ligne = ""
test = True
t1 = True
t2 = True
While test
If Not EOF(a) Then
Line Input #a, ligne
' test si l'on n'a pas atteint le conteneur suivant
t1 = Mid(Trim(ligne), 1, 1) <> "["
' test si la variable (suivant du symbole "=" ) est inclus dans la ligne courante
t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
End If
test = (Not EOF(a)) And t1 And t2
Wend
If t2 Then
GetIni = ""
Else
' c'est le cas où la variable a été trouvé, on en extrait la valeur
GetIni = Trim(Mid(ligne, (InStrRev(ligne, "=") + 1))) '"="
End If
Close #a
End Function


Public Function WriteIni(Filename As String, Contener As String, Variable As String, Value As Variant)
' ecriture de la valeur "valeur" de la variable "variable" dans la section "contener" et ce
' dans le fichier "filename". Si le fichier n'existe pas, on le crée,si la section
' n'existe pas, on la crée, si la variable n'existe pas, on la crée. Si la section et la
' variable existe alors on met à jour la valeur de la variable (écrasement de l'ancienne valeur)


Dim Resultat As String, _
test As Boolean, _
t1 As Boolean, _
t2 As Boolean, _
ligne As String, _
a As Long, _
retour As String
retour = Chr(13) & Chr(10)
' si le fichier n'existe pas, on le crée et on y met le container, la variable et sa valeur
If Not GetFileExist(Filename) Then
Call SetFile(Filename, "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value)
Exit Function
End If
' ouvertur du fichier
a = FreeFile()
Open Filename For Input As #a
' recherche du conteneur
test = True
t2 = True
While test
If Not EOF(a) Then
'lecture de la ligne
Line Input #a, ligne
'test si "[container]" est inclus en début de ligne (avec des espaces possible à sa gauche)
t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
Resultat = Resultat & ligne & retour
End If
test = (Not EOF(a)) And t2
Wend
' si le conteneur n'a pas été trouvé, on le crée ainsi que la variable et sa valeur
If EOF(a) And t2 Then
Close #a
Call SetFile(Filename, Resultat & retour & "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value & retour)
Exit Function
End If
' recherche la variable
ligne = ""
test = True
t1 = True
t2 = True
While test
If Not EOF(a) Then
Line Input #a, ligne
t1 = Mid(Trim(ligne), 1, 1) <> "["
t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
If t1 And t2 Then
Resultat = Resultat & ligne & retour
End If
End If
test = (Not EOF(a)) And t1 And t2
Wend
If t2 Then
'la variable est absente, on la crée à la fin du conteneur (avant le suivant)
Resultat = supprime(Resultat) & retour & Chr(32) & Variable & "=" & Value & retour & retour
Resultat = Resultat & ligne & retour
Else
'la variable est présente
Resultat = Resultat & Mid(ligne, 1, InStr(ligne, "=")) & Chr(32) & Value & retour
End If
While Not EOF(a)
Line Input #a, ligne
Resultat = Resultat & ligne & retour
Wend
Close #a
Call SetFile(Filename, Resultat)
End Function

Merci déjà pour vos réponses.

@+++