Je suis débutant en VB5 et voici ma premiere Applis.
Celle ci lit un fichier (data.txt) les ligne correspondants à l'affichage de rectangle sur une frm.
Le but à terme étant de réaliser un Ping sur les PC associés aux formes (plus tard ...)
Cetee premiere partie fonctionne (chargement dans le tableau, puis affichage des rectangles à partir du tableau) mais je suis moyennement satisfait de ma programmation.
En particulier :
- Le chargement ds le tableau avec des chaines concaténés
- Le passage de mon tableau dans un Variant pour le récuperer dans le module suivant
- La découpe de mes données (séparées par des virgules) par les instructions MID et Instr.
Si quelqu'un à des infos pour obtimiser ce code, je suis preneur.
Public NbPC 'Nombre de ligne dans le tableau
Public Contenant As Variant 'Contient le tableau pour passer à une autre Sub
Private Sub Btn1_Click()
Dim MonTableau(1 To 100) As String 'Creation d'un tableau
Vartableau = 1 'Variable d'index du tableau
ScaleMode = 3 'Passe en Pixels
Chemin = App.Path 'Renvoie le chemin local
NoFichier = FreeFile 'Defini un numero libre
Open Chemin + "\PingData.txt" For Input As #NoFichier
Do While Not EOF(NoFichier)
Input #NoFichier, Nom, Id, PosX, PosY, Lr, Hr
'Verifie le premier caractere : apostrophe pour commentaire
If Left(Nom, 1) <> "'" Then
'Remplis le tableau
MonTableau(Vartableau) = Nom & "," & Id & "," & PosX & "," & PosY & "," & Lr & "," & Hr
Vartableau = Vartableau + 1
End If
Loop
NbPC = Vartableau - 1
Close #NoFichier
'Passage du Tableau dans un Variant
Contenant = MonTableau
End Sub
Private Sub Btn2_Click()
MonTableau = Contenant 'Recuperation du tableau
Vartableau = 0
Do Until Vartableau = NbPC
Vartableau = Vartableau + 1
'Decoupage de la variable DATA
Data = MonTableau(Vartableau)
Virg1 = InStr(Data, ",") 'La 1ere virgule de trouve en Virg1 ...
Nom = Mid(Data, 1, Virg1 - 1)
Virg2 = InStr(Virg1 + 1, Data, ",")
Id = Mid(Data, Virg1 + 1, (Virg2 - 1) - Virg1)
Virg3 = InStr(Virg2 + 1, Data, ",")
PosX = Mid(Data, Virg2 + 1, (Virg3 - 1) - Virg2)
Virg4 = InStr(Virg3 + 1, Data, ",")
PosY = Mid(Data, Virg3 + 1, (Virg4 - 1) - Virg3)
Virg5 = InStr(Virg4 + 1, Data, ",")
Lr = Mid(Data, Virg4 + 1, (Virg5 - 1) - Virg4)
Virg6 = Len(Data)
Hr = Mid(Data, Virg5 + 1, Virg6 - Virg5)
'Dessin de la forme correspondante
ForeColor = &H8080FF
Line (PosX, PosY)-Step(Hr, Lr), , BF
Loop
End Sub
pourquoi tu ne crées pas directement un tableau public au lieu de l'exporter ou pourquoi ne travailles tu pas directement ds le module ?
Pourquoi, au lieu de concaténer et ensuite découper, ne pas créer un tavleau à 2 dimensions ... Public Tableau(1 to 100,1 to 6) ... et charger pour chaque ligne les 6 valeurs ...
Du mois c'est comme ça que je ferais ... ça te fait un truc 5 * si plus petit ...