Public Function load(ByVal fichier As String) As Boolean ' Try Dim myFileStream As Stream = File.OpenRead(fichier) Dim deserializer As New BinaryFormatter() Dim lecture As New Class_fichier_compte lecture = CType(deserializer.Deserialize(myFileStream), Class_fichier_compte) myFileStream.Close() 'récupére le nombre de ligne initiale (avant mise à jour mensuel) Dim NB_ligne As Integer = lecture.lignes.Count
' si le fichier n'est pas un nouveau fichier If Not lecture.lignes Is Nothing Then
Le type 'compte2010.ligne_compte' dans l'assembly 'compte2010, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' n'est pas marqué comme sérialisable.ce qui me parait pas du tout anormal, comme quoi je suis encore loin de la vérité ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionps : pourquoi serialiser toute la classe et pas juste les lignes?
du coup le mot de passe est enregistré en clair...
si j'ai besoin d'un klaxonne.. j'te bipp
'remplir la nouvelle ligne compléte Dim new_ligne As New ligne_compte 'déclare et instancie une nouvelle ligne => pcpt ^^ new_ligne.L_date = ladate new_ligne.L_type = letype new_ligne.L_budget = lebudget new_ligne.L_credit = lecredit new_ligne.L_debit = ledebit new_ligne.L_pointage = pointage new_ligne.L_mensuel = mensuel F_compte.mon_compte.lignes.Insert(0, new_ligne) F_compte.mon_compte.save(F_compte.Fichier)
'déclare une nouvel instance de la form F_op Dim add As New F_op ' Renseigne la variable "enfant" (dans F_op : Public new_ligne As New ligne_compte) add.txt_credit.Text = "0" add.txt_debit.Text = "0" add.Combo_budget.DataSource = mon_compte.budgets add.Combo_type.DataSource = mon_compte.types add.calendrier.TodayDate = Now add.Chk_pointage.Checked = False add.Chk_mensuel.Checked = False add.ShowDialog() If add.DialogResult = Windows.Forms.DialogResult.OK And Not add.annule Then mon_compte.lignes.Add(F_op.new_ligne) mon_compte.save(Fichier) ' a faire dans la classe compte la miseAjour_lv ' ListView1.Items.Add(F_op.new_ligne.ToListViewItem) ' à supprimer ensuite... MiseAjour_LV() 'renvoie un nothing et donc plante End If add = Nothing
Public Class F_op Public new_ligne As New ligne_compte 'déclare et instancie une nouvelle ligne Dim lecredit, ledebit As Double 'pour vérif que les valeurs sont correct (double quoi) Public annule As Boolean = False 'form invalide ou quité Private Sub txt_credit_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_credit.TextChanged Try Dim rien As String = Replace(txt_credit.Text, ".", ",") lecredit = Double.Parse(rien) Catch ex As Exception txt_credit.Text = "0" End Try End Sub Private Sub txt_debit_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_debit.TextChanged Try Dim rien As String = Replace(txt_debit.Text, ".", ",") ledebit = Double.Parse(rien) Catch ex As Exception txt_debit.Text = "0" End Try End Sub Private Sub Bp_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bp_ok.Click ' vérifie que les champs crédit et débit sont valides avant d'écrire ou modifier une ligne ! If txt_credit.Text "0" And txt_debit.Text "0" Then Me.Close() MsgBox("opération invalide" & vbCrLf & " solde et débit nul ", MsgBoxStyle.Exclamation) annule = True Exit Sub End If ' ajoute les nouvelles valeurs à l'enfant new_ligne With Me.new_ligne .L_date = calendrier.SelectionRange.Start .L_type = Combo_type.Text .L_budget = Combo_budget.Text .L_commentaire = "pas encore fait" .L_credit = lecredit .L_debit = ledebit .L_pointage = Chk_pointage.Checked .L_mensuel = Chk_mensuel.Checked End With Me.Close() End Sub End Class