MEMORISER_VALEUR

Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
- - Dernière réponse : Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
- 26 mai 2010 à 14:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51785-memoriser-valeur

Afficher la suite 
Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
Salut, passe directement tes lignes à écrire c'est plus simple non ?
Private Sub Form1_FormClosing
Dim monStreamWriter As StreamWriter = New StreamWriter(fichier)
31. monStreamWriter.WriteLine(CheckBox1.Checked.tostring )
32. monStreamWriter.WriteLine(RadioButton1.Checked.tostring)
33. monStreamWriter.WriteLine(TextBox1.Text)
34. monStreamWriter.WriteLine(comboBox1.Text)
36. monStreamWriter.Close()
end sub
pense à tester, aussi, que fichier n'est pas vide et que le chemin est toujours valide ;)
pour ton clear() essaye de le remplacer par un truc comme ça, cela marche avec les streams
myFileStream = File.Create(fichier) ' création d'un nouveau fichier à chaque sauvegarde

bonne prog ++
cs_Le Pivert
Messages postés
6340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 novembre 2019
88 -
Bonjour ADN56,
Je te remercie de m'avoir éclairé sur les parties du code qui laissées à désirer. Cela le raccourci et il n'y a pas de lignes inutiles.Bonne idée de créer un nouveau fichier à chaque fermeture.
@+ Le Pivert
Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
salut, de rien. Dans le cas de données plus volumineuse et/ou plus complexe il est préférable de sérialiser en binaire ou xml. voici un exemple en binaire.
1-création d'une classe sérialisable qui reprend tes valeurs
2-sub de savegarde
3- sub de lecture, tu le vois c'est pas plus mal comme méthode et surtout plus souple.

Option Strict On
Imports System
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

<Serializable()> Public Class config
' propriétées
Public TXTtextbox, TXTcombobox As String
Public CHKbox, CHKradio as boolean
'etc....

'----------------------------------------------------------------------
' Sub qui sérialise en binaire dans le fichier passé en paramétre
'----------------------------------------------------------------------
Public Sub save(ByVal fichier As String)
If fichier = String.Empty Then Exit Sub 'quit la sub si aucun fichier ouvert avant la fermeture.
Dim myFileStream As Stream = Nothing

Try
myFileStream = File.Create(fichier) ' création d'un nouveau fichier à chaque sauvegarde
Dim serializer As New BinaryFormatter
serializer.Serialize(myFileStream, Me)
myFileStream.Close()

Catch e As DirectoryNotFoundException

Affiche_erreur("Répertoire introuvable, vérifier la présence du disque amovible si vous en utilisez un", e.Message)

Catch e As FileNotFoundException ' n'arrive jamais car file create à chaque appel de SAve

Affiche_erreur("Fichier introuvable, vérifier la présence du disque amovible si vous en utilisez un", e.Message)

'Catch e As FileLoadException
Catch e As Exception

Affiche_erreur("erreur d'accés au fichier, Ex : Lecture seul", e.Message)

Finally

If Not myFileStream Is Nothing Then myFileStream.Close()
End Try

End Sub

'----------------------------------------------------------------------
' fonction qui lit le fichier sérialisé
'----------------------------------------------------------------------
Public Function load(ByVal fichier As String) As Boolean
Dim myFileStream As Stream = Nothing

Try
myFileStream = File.OpenRead(fichier)
Dim deserializer As New BinaryFormatter()
Dim lecture As New config
lecture = CType(deserializer.Deserialize(myFileStream), config)
myFileStream.Close()

With Me
.TXTtextbox = lecture.TXTtextbox
.TXTcombobox = lecture.TXTcombobox
.CHKbox = lecture.CHKbox
.CHKradio = lecture.CHKradio
End With

Return True

Catch e As Exception

Affiche_erreur("erreur d'accés au fichier", e.Message)
Return False

Finally

If Not myFileStream Is Nothing Then myFileStream.Close()
End Try
End Function
end class

dans ta form tu déclare une instance de cette class et tu appel les méthodes save et load pour retrouver tes valeurs. il te suffit dés lors de les réatrribuer à tes controls.

dim cetteconfig as new config
form load
cetteconfig.load(fichier)
textbox1.text = cetteconfig.TXTbox
Checkbox1.checked = cetteconfig.CHKbox (c'est bien un boolean)


form close
cetteconfig.save(fichier)
Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
Pour finir sur ce sujet, dans ton cas, la meilleur méthode reste encore de passer par le fichier My.setting. Cela est natif dans VS et trés simple d'utilisation.
kenavo (sous la canicule)
Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
16 -
Oui en effet ADN les paramètres d'applications sont la pour ca, je ne vois pas l'utilité d'une telle source...

De plus les valeurs sont enregistés au format texte brut donc bien chiant pour la récup comme le montre ce bout de code :

If ligne_check = "True" Then
CheckBox1.Checked = True
Else
CheckBox1.Checked = False
End If

Pour enregistrer des valeurs dans un fichier il y a aussi la sérailisation en .Net