Est ce que c'est bien programmé ???

Pierre - 18 mai 2001 à 13:00
 Pierre - 22 mai 2001 à 13:51
Bonjour,

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.

Merci de votre aide

Pierre

Data.txt

'Nom,Id,PosX,PosY,Largeur,Hauteur
PC-0001,0001,10,10,10,20
PC-0002,0002,31702,10,30,10,20

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

2 réponses

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 ...

Schouly
0
Ca marche super bien avec un tableau à 2 dimension.
Merci.

Par contre, la declaration "Public" de ce tableau me jette systematiquement, mais ce n'est pas bien grave.

Heu ... et Est ce que Quelqu'un sait comment lire une base de registre DISTANTE ?

Merci pour tout

Pierre
0
Rejoignez-nous