VB.NET Débutant : tableau ou liste?

alx3d Messages postés 2 Date d'inscription lundi 8 juillet 2002 Statut Membre Dernière intervention 2 mai 2006 - 2 mai 2006 à 04:54
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 29 mai 2008 à 23:45
Bonjour à tous,

Je suis débutant et j'ai besoin d'aide.

J'ai une liste de valeur constante que j'aimerai incerer dans mon application. Je ne sait pas du tout par ou commencer. J'explique:

J'ai un texte box dans lequel l'utilisateur doit entrer un nombre de 0 à 1000, l'application doit récupèrer ce nombre et chercher dans une liste ou un tableau les 2 valeurs associée a celui-ci et les traiter séparèments.

Ex. de tableau :
1 = 110, 00
2 = 99,00
3 = 93,00
...
13 = 72, 20
14 = 71, 01
15 = 70, 20
...
999 = 12,46
1000 = 12,42

Je doit utiliser ces valeur pour envoyer une commande en HEX:

Si l'utilisateur entre "1000" l'application doit récupèrer HEX(12) et HEX(42) et envoyer la commande: "21 0C 2A"


Quelqu'un peut me donner un coup de main??

Merci à l'avance

8 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
2 mai 2006 à 10:10
Salut,
Je pense que tu peux résoudre ton problème avec un Type à la place de ton tableau :

' Déclaration
Public Type MyTab
   Valeur1 as long
   Valeur2 as long
End Type

Public MonTaBleau(1 to 1000) as MyTab
MonTaBleau(1).Valeur1=110
MonTaBleau(1).Valeur2=0
MonTaBleau(2).Valeur1=99
MonTaBleau(2).Valeur2=0
MonTaBleau(3).Valeur1=93
MonTaBleau(3).Valeur2=0
...
MonTaBleau(999).Valeur1=12
MonTaBleau(999).Valeur2=46
MonTaBleau(1000).Valeur1=12
MonTaBleau(1000).Valeur2=42

Après tu peux exploiter tes varaibles par Hex(MonTaBleau(1000).Valeur1) et Hex(MonTaBleau(1000).Valeur2)

 Fiko ;-)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 mai 2006 à 13:38
salut,
dans le principe (en VB6, désolé), je dirai un truc de ce genre...

Option Explicit 
Dim aMonTab(1000) As String 
'
'
Private Sub Form_Load() 
    Dim i As Integer 
    For i =  0 To 1000 
        aMonTab(i) =  CStr (i \ 10 + 10) & "," & CStr(i * 9) \ 100) 
        'List1.AddItem aMonTab(i)
    Next i 
    Text1.Text  = "15" 
End Sub 
'
Private Sub Form_Unload(Cancel As Integer) 
    Erase aMonTab 
End Sub 
'
'
Private Sub Command1_Click() 
    Dim lVal As Long 
    lVal =   Val (Text1.Text) 
    If lVal > 0 And lVal < 1001 Then 
        Dim sLeft As String, sRight As String 
        sLeft  = Left(aMonTab(lVal), InStr(1, aMonTab(lVal), ",") - 1) 
        sRight =   Right (aMonTab(lVal), Len(aMonTab(lVal)) - InStr(1, aMonTab(lVal), ",")) 
        If LenB(sRight)  = 2 Then sRight =  sRight & "0" 

        sLeft =  CStr (Hex(Val(sLeft))) 
        sRight  = CStr(Hex(Val(sRight))) 

        If LenB(sLeft) =  2 Then sLeft = "0" & sLeft 
        If  LenB (sRight)  = 2 Then sRight = "0" & sRight 

        MsgBox "21 " & sLeft & " " & sRight 
    Else 
        MsgBox "valeur incorrecte", vbCritical 
    End If 
End Sub

<small> Coloration
syntaxique automatique [AFCK]</small>
       

++
PCPT    [AFCK]
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
3 mai 2006 à 12:46
Salut 12022 alx3d, salut =347460 fiko81, et salut 401740 PCPT,

trop long? d'accord, alors en 3 lignes (on ne compte pas les caractères de continuation [MP : au fait, c'est 25 max(tiens, mais à qui dis-je cela?)]):

en VB6, pour imiter les static s_Variant const k_Machin[] du C, j'aurais dit :

Dim Machin, Mots As Variant
'Affectations du tableau de pseudo-constantes (appelée aussi des constantes variables :) )
Machin = Array("110;0","99;0","93;0",...,"12;42")'      le; pour eviter les confusions de type

'préparation pour l'affichage de la pseudo-constante 1000
Mots = Split (Machin(1000),";",-1)'   sépare les mots de la pseudo-constante 1000, 
                                                      '  donc de 12;42

'Affichage
MsgBox "21 " & _
        String(2 - Len(Hex(Mots(0))), "0") & Hex(Mots(0)) & " " & _
        String(2 - Len(Hex(Mots(1))), "0") & Hex(Mots(1))'    renvoie 21 0C 2A

et d'après ma nouvelle doc (2005), il existe un objet Array (implicite d'ailleurs), qui permet des écritures du genre :
'instanciation implicite d'un array
Dim myIntArray() As Integer = {1,2,3,4,5}

et

'énumération
For Each i In myIntArray
   Console.Write(i)
Next i

PS : pardon d'avance, 401740 PCPT :)
PS2 : =12022 alx3d, je te laisse adapter l'exemple VB6 en .Net, je n'en fait pas encore assez (du .Net)
à+

rvblogn

<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mai 2006 à 18:48
salut à tous, salut rvblog,
bien vu en effet au niveau du nombre de lignes. par contre en ressource c'est pas çà...
mieux vaut éviter les variant autant que possible.

ps : pas de mal ^^

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mai 2006 à 18:50
je dis çà alors que j'ai oublié mes $ (donc mes left right renvoient aussi des variant )
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
3 mai 2006 à 21:02
Et moi, je viens de prendre conscience du pourquoi tout le monde s'évertue à utiliser des mid$, left$, right$... là où jusque là je trouvais que ça cassait la lisibilité

Comme quoi, avant de passer au .Net, il en reste(ait?) encore sous le coude de VB6!

PS : idem, il n'y a pas longtemps, j'apprenais (par toi me semble-t-il) l'avantage cruel du VB6 US!

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
chaudier37 Messages postés 209 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 juillet 2009
29 mai 2008 à 23:07
bonjour
je viens de voir que vous avez une solution pour un tableau...
j'ai le même problème. je ne me souviens plus du cours...

Private Sub CommandButton1_Click()




Dim MonTaBleau(1 To 7) As Integer
MonTaBleau(1) = lundi
MonTaBleau(2) = mardi
MonTaBleau(3) = mercredi
MonTaBleau(4) = jeudi
MonTaBleau(5) = vendredi
MonTaBleau(6) = samedi
MonTaBleau(7) = dimanche
Dim a As Variant
a = InputBox("entrez le jour") & MonTaBleau(MonTaBleau, a)
MsgBox "c'est " & MonTaBleau(a)
End Sub



quelle est la syntaxe exacte pour avoir avec un chiffre dimanche ou mercredi ?

merci beaucoup








 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 mai 2008 à 23:45
salut,

pour cet exemple çà sera juste...
MsgBox WeekdayName(3, False, vbMonday)

sinon un tableau en général, il n'y a pas de solution mirable, il faut boucler (for I = L to U) sur chaque item.
si item = "ta chaine" alors quitter la boucle, I vaut la valeur recherchée
0
Rejoignez-nous