none
ecrire dans un fichier avec vb2013 RRS feed

  • Question

  • bonjour

     j'ai un form qui contiens des labels que je voudrais enregistrer

     mon soucis  je voudrais que je puisse retrouver la totalité de l'enregistrement par recette je sais pas fiare pour un label mais pour plusieurs je sais pas qui peut m'aider

    voici l'image de mon form

    lundi 20 juin 2016 19:50

Réponses

  • Bonjour

    Il existe 250 000 façons de faire. Il faut utiliser un serialisateur. Le Framework en propose plusieurs mais ici, on va utiliser NewtonSoft.Json. Cela sérialise au format json, donc lisible avec le bloc notes, compréhensible par un être humain et assez optimisé côté perfs.

    1ère étape : clic droit sur votre projet, Gérer les packages Nuget, dans parcourrir cherchez Newtonsoft.Json, cliquez sur Installer.

    Il vous ajoute la référence à cette dll (v8.0.3 au moment ou j'écris ces lignes).

    2ème étape : créez vos classes. On va organiser ca avec une classe Recette qui comprends des ingrédients et des préparations :

    Public Class Recette
        public sub New
            Ingredients = New List(Of Ingredient)
            Preparations = new List(Of Preparation)
        End sub
    
        public Property Titre As String
        Public Property Ingredients as List(Of Ingredient)
        Public Property Preparations As List(Of Preparation)
    End Class
    
    Public Class Ingredient
        Public Property Description As String
    End Class
    
    Public Class Preparation
        public Property Ordre As Int32
        Public Property Description As String
    End Class

    Il ne reste plus qu'à sérialiser, désérialiser :

    Module Module1
    
        Sub Main()
            ' Création de la recette
            Dim recette = New Recette With {.Titre = "Oeufs au plat"}
            recette.Ingredients.Add(New Ingredient With {.Description = "Un oeuf"})
            recette.Ingredients.Add(New Ingredient With {.Description = "Du sel"})
    
            recette.Preparations.Add(New Preparation With {.Ordre=1, .Description="Faites chauffer la poêle"})
            recette.Preparations.Add(New Preparation With {.Ordre=2, .Description="Mettez les oeufs dans la poêle"})
            
            ' stock dans Mes Documents
            Dim fileName As String = Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "monFichier.txt")
    
            ' sérialisation de l'objet dans le fichier
            Save(recette, fileName)
            
            ' désérialisation de l'objet depuis le fichier
            Dim newRecette = Load(fileName)
    
            Console.WriteLine(newRecette.Titre)
        End Sub
    
        Private Sub Save(recette as Recette, fileName As string)
            Dim content = JsonConvert.SerializeObject(recette)
            File.WriteAllText(fileName, content)
        End Sub
    
        Private Function Load(fileName As string) As Recette
            Dim content = File.ReadAllText(fileName)
            return JsonConvert.DeserializeObject(Of Recette)(content)
        End Function
    
    
    End Module

    Ce qui vous donne un fichier avec le contenu suivant :

    {
    	"Titre" : "Oeufs au plat",
    	"Ingredients" : [{
    			"Description" : "Un oeuf"
    		}, {
    			"Description" : "Du sel"
    		}
    	],
    	"Preparations" : [{
    			"Ordre" : 1,
    			"Description" : "Faites chauffer la poêle"
    		}, {
    			"Ordre" : 2,
    			"Description" : "Mettez les oeufs dans la poêle"
    		}
    	]
    }


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone


    mardi 21 juin 2016 06:10

Toutes les réponses

  • Bonjour

    Il existe 250 000 façons de faire. Il faut utiliser un serialisateur. Le Framework en propose plusieurs mais ici, on va utiliser NewtonSoft.Json. Cela sérialise au format json, donc lisible avec le bloc notes, compréhensible par un être humain et assez optimisé côté perfs.

    1ère étape : clic droit sur votre projet, Gérer les packages Nuget, dans parcourrir cherchez Newtonsoft.Json, cliquez sur Installer.

    Il vous ajoute la référence à cette dll (v8.0.3 au moment ou j'écris ces lignes).

    2ème étape : créez vos classes. On va organiser ca avec une classe Recette qui comprends des ingrédients et des préparations :

    Public Class Recette
        public sub New
            Ingredients = New List(Of Ingredient)
            Preparations = new List(Of Preparation)
        End sub
    
        public Property Titre As String
        Public Property Ingredients as List(Of Ingredient)
        Public Property Preparations As List(Of Preparation)
    End Class
    
    Public Class Ingredient
        Public Property Description As String
    End Class
    
    Public Class Preparation
        public Property Ordre As Int32
        Public Property Description As String
    End Class

    Il ne reste plus qu'à sérialiser, désérialiser :

    Module Module1
    
        Sub Main()
            ' Création de la recette
            Dim recette = New Recette With {.Titre = "Oeufs au plat"}
            recette.Ingredients.Add(New Ingredient With {.Description = "Un oeuf"})
            recette.Ingredients.Add(New Ingredient With {.Description = "Du sel"})
    
            recette.Preparations.Add(New Preparation With {.Ordre=1, .Description="Faites chauffer la poêle"})
            recette.Preparations.Add(New Preparation With {.Ordre=2, .Description="Mettez les oeufs dans la poêle"})
            
            ' stock dans Mes Documents
            Dim fileName As String = Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "monFichier.txt")
    
            ' sérialisation de l'objet dans le fichier
            Save(recette, fileName)
            
            ' désérialisation de l'objet depuis le fichier
            Dim newRecette = Load(fileName)
    
            Console.WriteLine(newRecette.Titre)
        End Sub
    
        Private Sub Save(recette as Recette, fileName As string)
            Dim content = JsonConvert.SerializeObject(recette)
            File.WriteAllText(fileName, content)
        End Sub
    
        Private Function Load(fileName As string) As Recette
            Dim content = File.ReadAllText(fileName)
            return JsonConvert.DeserializeObject(Of Recette)(content)
        End Function
    
    
    End Module

    Ce qui vous donne un fichier avec le contenu suivant :

    {
    	"Titre" : "Oeufs au plat",
    	"Ingredients" : [{
    			"Description" : "Un oeuf"
    		}, {
    			"Description" : "Du sel"
    		}
    	],
    	"Preparations" : [{
    			"Ordre" : 1,
    			"Description" : "Faites chauffer la poêle"
    		}, {
    			"Ordre" : 2,
    			"Description" : "Mettez les oeufs dans la poêle"
    		}
    	]
    }


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone


    mardi 21 juin 2016 06:10
  • un grand merci je connaissais pas cela je vais le tester
    mardi 21 juin 2016 06:45