Bonjour,

Je commence tout juste avec VB.net et je butte sur un problème depuis plusieurs jours que je ne parviens pas à comprendre - j'espère qu'un bonne âme saura m'expliquer où je me plante.

J'ai écris le petit programme suivant pour afficher des valeurs contenues dans un fichier texte :

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
Public Class Form1
    Dim LineNumber As Integer
    Dim Datablock(,) As Integer
    Dim TextLine As String
    Dim singledataresult, SingledataType As Integer
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim OpenCameraMotionFileDialog As New OpenFileDialog()
        OpenCameraMotionFileDialog.Title = "Please Select a File"
        OpenCameraMotionFileDialog.InitialDirectory = "C:\\Program Files (x86)/MCSM"
        OpenCameraMotionFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        If OpenCameraMotionFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            Try
                Dim MoCamStrm As New System.IO.StreamReader(OpenCameraMotionFileDialog.FileName)
                If (MoCamStrm IsNot Nothing) Then
                    While Not MoCamStrm.EndOfStream
                        TextLine = MoCamStrm.ReadLine()
                        If InStr(1, TextLine, "--") = 0 Then
                            LineNumber = LineNumber + 1
                            ReDim Datablock(LineNumber, 1)
                            Dim StringSeparator() As String = {"|"}
                            Dim result() As String
                            result = TextLine.Split(StringSeparator, StringSplitOptions.RemoveEmptyEntries)
                            For Each SingleFullResult As String In result
                                If InStr(1, SingleFullResult, "Tx") <> 0 Then singledataresult = Val(Trim(Mid(SingleFullResult, InStr(1, SingleFullResult, "Tx") + 2))) : SingledataType = 0
                                If InStr(1, SingleFullResult, "Ty") <> 0 Then singledataresult = Val(Trim(Mid(SingleFullResult, InStr(1, SingleFullResult, "Ty") + 2))) : SingledataType = 1
                                Datablock(LineNumber, SingledataType) = singledataresult
                            Next SingleFullResult
                        End If
                    End While
                End If
                MoCamStrm.Close()
            Catch Ex As Exception
                MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
            End Try
        End If
        Call DisplayMotionCameraData()
    End Sub
 
    Sub DisplayMotionCameraData()
        Label1.Text = Datablock(LineNumber, 0)
        Label2.Text = Datablock(LineNumber, 1)
        Label3.Text = LineNumber
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        LineNumber = LineNumber - 1
        If LineNumber < 1 Then LineNumber = 1
        Call DisplayMotionCameraData()
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        LineNumber = LineNumber + 1
        If LineNumber > UBound(Datablock, 1) Then LineNumber = UBound(Datablock, 1)
        Call DisplayMotionCameraData()
    End Sub
End Class
Par ailleurs, j'ai un fichier texte ou chaque ligne est composée ainsi :
Tx_un_entier|Ty_un_entier

Le but est d'afficher les valeurs à côté de Tx et Ty pour chaque ligne... et c'est là que je m'arrache les cheveux : seul les valeurs de la dernière ligne s'affichent correctement, les autres sont toujours égales à 0..... Je ne comprends pas du tout ou est mon erreur - et je soupçonne que c'est parce que je n'ai pas compris un truc important sur la programmation ou sur le VB (mon niveau est vraiment bas, je l'avoue). Alors merci d'avance pour toute aide qui me permettrait de comprendre pourquoi ça marche pas.