Passer de VB6 à VB.NET - Fichiers séquentiels
Bonjour,
Je n'arrive pas à trouver comment exploiter les données d'un fichier *.TXT dont les champs sont séparés par une virgule alors que j'y arrivais bien en VB6.
Voici comment se présentent les lignes dans le fichier :
8,1,"Lucien"
9,1,"Alix"
10,1,"Guillaume"
11,1,"Hortense et Pauline"
Voici un extrait de mon code en VB6 :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Dim i%, j%, m%
If laDate = "" Or Not IsDate(laDate) Then laDate = Date
titreMsg$ = "À souhaiter le " & Format(laDate, "dddd d mmmm")
Open leChemin$ & "\" & nomFich1$ For Input As #1
Do While Not EOF(1)
Input #1, j%, m%, fete$
If j% = Day(laDate) And m% = Month(laDate) Then
Exit Do
End If
Loop
Close #1 |
--------
Pouvez-vous m'aider ?
D'avance, un grand merci !
2 pièce(s) jointe(s)
Effectivement, il y a un problème.
Désolé si j'ai mal qualifié mon fichier texte, c'est probablement ce qui fait que ça ne fonctionne pas parfaitement.
Voilà comment j'ai intégré ton code dans mon programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Private Sub BtnAfficheFete_Click(sender As Object, e As EventArgs) Handles BtnAfficheFete.Click
Dim FichierEntree As String = "fetes.txt"
Dim FEntree As BinaryReader
FEntree = New BinaryReader(File.Open(FichierEntree, FileMode.Open, FileAccess.Read))
' *** Dans ton exemple, chaque enregistrement a 3 champs : 2 entiers et une chaine
While FEntree.PeekChar() <> -1 ' Si = -1, alors c'est l'EOF
jour = FEntree.ReadInt32()
mois = FEntree.ReadInt32()
fete = FEntree.ReadString()
MsgBox(jour & ", " & mois & ", " & fete)' *************** Placé provisoirement ici pour contrôler au fur et à mesure la sortie ****************
' *** utiliser les données de cet enregistrement
End While ' Tant qu'il y a des enregistremnt, on boucle ...
If jour = Date.Today.Day And mois = Date.Today.Month Then
MsgBox("Aujourd'hui, on fête les " & fete)
End If
FEntree.Close()
End Sub |
Je joins une copie d'écran des 3 premiers affichages du MsgBox (testFichier01.jpg).
Ces affichages se poursuivent jusqu'au mois de Mai puis le programme plante (testFichier02.jpg) avec une erreur d'exception.
Pièce jointe 459016Pièce jointe 459017
Mon fichier "fetes.txt" comporte 366 lignes correspondant à chacun des jours d'une année, y compris le 29 février.
Chaque ligne affiche le jour, le mois et le Saint du jour.
Elle se termine par un "retour chariot".
Chaque donnée étant séparée de la suivante par une virgule.
Est-ce suffisamment clair pour toi ? Merci encore pour ton aide.
Cordialement,
1 pièce(s) jointe(s)
Ça fonctionne parfaitement maintenant.
Que dire d'autre que "Merci infiniment" ?
J'ai constaté que les guillemets dans mon fichier texte ne sont plus nécessaires.
En revanche, contrairement à VB6, les lettres accentuées sont remplacées par un petit losange noir contenant un point d'interrogation (voir copie d'écran).
Y a-t-il quelque chose à faire pour que ces lettres s'affichent correctement ?
Pièce jointe 459059
Voilà un "Default" qui n'en est pas un.
C'est exactement l'instruction qui change tout.
Code:
System.Text.Encoding.Default
convient parfaitement.
Un très grand merci pour ton aide et ta disponibilité.