IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Lire et écrire une structure


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Points : 61
    Points
    61
    Par défaut Lire et écrire une structure
    Bonjour,

    Débutant total en VB (j'ai écrit mes première ligne Mardi), j'essaye de faire un formulaire avec divers renseignements (nom, prénom, tel, mail, etc...). J'insère ces données dans un tableau de structure.

    J'aimerai pouvoir écrire ces données dans un fichier et les lire à partir de ce fichier.

    Pour l'instant, j'arrive à écrire mes données dans un fichier lors d'un form_closing, mais après plus d'une demi journée de recherche, je n'arrive pas a savoir comment faire pour lire ces donnés (sachant que j'ai séparé chaque donnée par un ";" et chaque structure par un retour à la ligne) pour les réinsérer dans le tableau de structure lors d'un form_load.

    Voici déjà ce que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    Imports System.IO
    Imports System.Text.RegularExpressions
     
    Public Class Form1
     
        Const PATHFICHIER As String = "save.txt"
        Dim compteur_insertion As Integer = 0
     
        Structure Personne
            Dim Matricule As String
            Dim Identifiant As String
            Dim Nom As String
            Dim Prenom As String
            Dim Telephone As String
            Dim Mail As String
        End Structure
     
        Dim StructPersonne(1000) As Personne
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            While File.ReadAllLines(PATHFICHIER) = vbCrLf
                MsgBox("Coucou", 4097, "coucou")
            End While
        End Sub
     
        Private Sub BT_ECRIRE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_ECRIRE.Click
            Me.LBL_ERR.Visible = False
            Me.LBL_ERR_MATRICULE.Visible = False
            Me.LBL_ERR_NOM.Visible = False
            Me.LBL_ERR_PRENOM.Visible = False
            Me.LBL_ERR_MAIL.Visible = False
            If Verification() And Verif_Matricule() And Verif_Nom() And Verif_Prenom() And Verif_Mail() Then
                StructPersonne(compteur_insertion).Matricule = TXT_MATRICULE.Text
                StructPersonne(compteur_insertion).Identifiant = TXT_IDENTIFIANT.Text
                StructPersonne(compteur_insertion).Nom = TXT_NOM.Text
                StructPersonne(compteur_insertion).Prenom = TXT_PRENOM.Text
                StructPersonne(compteur_insertion).Telephone = TXT_TEL.Text
                StructPersonne(compteur_insertion).Mail = TXT_MAIL.Text
                'On vide les textbox
                Me.TXT_MATRICULE.Text = ""
                Me.TXT_IDENTIFIANT.Text = ""
                Me.TXT_NOM.Text = ""
                Me.TXT_PRENOM.Text = ""
                Me.TXT_TEL.Text = ""
                Me.TXT_MAIL.Text = ""
                compteur_insertion += 1
            Else
                If Not Verification() Then
                    Me.LBL_ERR.Visible = True
                End If
                If Not Verif_Matricule() Then
                    Me.LBL_ERR_MATRICULE.Visible = True
                End If
                If Not Verif_Nom() Then
                    Me.LBL_ERR_NOM.Visible = True
                End If
                If Not Verif_Prenom() Then
                    Me.LBL_ERR_PRENOM.Visible = True
                End If
                If Not Verif_Mail() Then
                    Me.LBL_ERR_MAIL.Visible = True
                End If
            End If
        End Sub
     
        ''' <summary>
        ''' Fonction qui vérifie que tout les champs sont bien rempli
        ''' </summary>
        ''' <returns>return un boolean true si tout les champs sont rempli et False si au moins un champs est vide</returns>
        ''' <remarks></remarks>
        Function Verification() As Boolean
            Dim Bon As Boolean = True
            If Me.TXT_MATRICULE.Text = "" Then
                Bon = False
            End If
            If Me.TXT_IDENTIFIANT.Text = "" Then
                Bon = False
            End If
            If Me.TXT_NOM.Text = "" Then
                Bon = False
            End If
            If Me.TXT_PRENOM.Text = "" Then
                Bon = False
            End If
            If Me.TXT_TEL.Text = "" Then
                Bon = False
            End If
            If Me.TXT_MAIL.Text = "" Then
                Bon = False
            End If
            Return Bon
        End Function
     
        ''' <summary>
        ''' Fonction qui vérifie le format du numéro de téléphone
        ''' </summary>
        ''' <returns>Return False si numéro pas conforme au format choisi</returns>
        ''' <remarks></remarks>
        Function Verif_Matricule() As Boolean
            Dim pattern As String = "^\d{4}$"
            Dim Bon As Boolean = True
            If Regex.IsMatch(TXT_MATRICULE.Text, pattern) Then
                Bon = True
            Else
                Bon = False
            End If
            Return Bon
        End Function
     
        ''' <summary>
        ''' Fonction qui vérifie le format du Nom
        ''' </summary>
        ''' <returns>Return False si le nom n'est pas composé de lettre uniquement (maj ou min)</returns>
        ''' <remarks></remarks>
        Function Verif_Nom() As Boolean
            Dim pattern As String = "^[a-zA-Z ]{2,}$"
            Dim Bon As Boolean = True
            If Regex.IsMatch(TXT_NOM.Text, pattern) Then
                Bon = True
            Else
                Bon = False
            End If
            Return Bon
        End Function
     
        ''' <summary>
        ''' Fonction qui vérifie le format du Prenom
        ''' </summary>
        ''' <returns>Return False si le Prenom n'est pas composé de lettre uniquement (maj ou min)</returns>
        ''' <remarks></remarks>
        Function Verif_Prenom() As Boolean
            Dim pattern As String = "^[a-zA-Z]{2,}$"
            Dim Bon As Boolean = True
            If Regex.IsMatch(TXT_PRENOM.Text, pattern) Then
                Bon = True
            Else
                Bon = False
            End If
            Return Bon
        End Function
     
        ''' <summary>
        ''' Fonction qui vérifie le format de l'adresse mail
        ''' </summary>
        ''' <returns>Return False si l'adresse mail n'est pas correcte</returns>
        ''' <remarks></remarks>
        Function Verif_Mail() As Boolean
            Dim pattern As String = "^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"
            Dim Bon As Boolean = True
            If Regex.IsMatch(TXT_MAIL.Text, pattern) Then
                Bon = True
            Else
                Bon = False
            End If
            Return Bon
        End Function
     
        Private Sub Form1_closing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closing
            'On écrit
            Dim compteur_ecriture As Integer
            For compteur_ecriture = 0 To compteur_insertion - 1
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Matricule)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Identifiant)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Nom)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Prenom)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Telephone)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Mail)
                File.AppendAllText(PATHFICHIER, ";")
                File.AppendAllText(PATHFICHIER, vbCrLf)
            Next
        End Sub
    End Class

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    ne pas faire plusieurs append sur le fichier texte, ca oblige à plusieurs accès aux fichiers, mais le faire en une seule fois

    pour concaténer du texte rapidement, il y a la classe system.text.stringbuilder

    les classes sont plus conseillées que les structures

    les collections (du type list(of personne)) sont plus conseillées que les tableaux

    pour lire un fichier il y a file.readalltext ou readalllines si vous voulez directement des lignes
    pour découper un string, il y a split qui demande quel est le ou les caractères de séparation

    pour écrire une classe dans un fichier, ca peut se faire en 2 lignes de code avec la sérialisation xml (ou binaire) (xmlserializer je crois)
    vous pouvez rester sur un découpage avec ; si vous préférez

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Points : 61
    Points
    61
    Par défaut
    Oula

    Merci beaucoup pour la réponse, à ce que je vois j'ai encore beaucoup à étudier ! Car je n'ai aucune idée de ce dont vous parlez

    Je vais me penchez sur le pdf que j'ai trouvé sur ce site qui m'a l'air fort complet (plus de 1300 pages)

    Je dois rendre l'exercice mardi, ça vas être tendu

Discussions similaires

  1. Lire et afficher une structure cobol
    Par rockley dans le forum Cobol
    Réponses: 15
    Dernier message: 09/01/2015, 12h31
  2. Lire et écrire une valeur binaire dans la base de registre
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 21h46
  3. Réponses: 8
    Dernier message: 09/12/2011, 19h48
  4. [VB6] Lire et écrire sur une fenêtre dos...
    Par Zenar dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 16/03/2008, 14h14
  5. Lire et écrire une clé binaire
    Par defluc dans le forum Delphi
    Réponses: 1
    Dernier message: 19/10/2006, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo