Optimisation de code

Résolu
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 - 9 juin 2011 à 15:28
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 - 10 juin 2011 à 15:16
Salut à tous.

Je dialogue avec une carte via le port série, et à un moment je reçoit une donnée d'erreur. Le format de la donnée est : 51 pour aucune erreur, puis 5A pour 1%, 5B pour 2% .... je retrouve le pourcentage en retranchant 64 au code ascii de la lettre.

Pour le moment, j'extrait la lettre en placant la variable dans une texte box. Cela donne ce code :

        If Verif > "51" Then
            TextBox22.Text = Verif 'On place Verif dans une texte box ( invisible lors de l'execution )
            TextBox22.SelectionStart = Len(TextBox22.Text) - 1 'On récupère la Lettre Correspondant à l'erreur
            TextBox22.SelectionLength = 1
            Verif = TextBox22.SelectedText
            Pourc = Asc(Verif) 'On converti la lettre          
            Pourc = Pourc - 64 'On retire 64 pour obtenir le pourcentage
        End If

Cela marche impeccable, mais je pense qu'il y a une manière plus propre de le faire. La question est donc : Y'a t'il moyen d'extraire un "bout" de la variable ?

_______________________
Imports System.Thinking
'La vie Roxxx un max à qui s'en donne la peine

6 réponses

Benjyii Messages postés 21 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 9 juin 2011
9 juin 2011 à 15:50
Bonjour,

Pour extraire un bout de variable tu peux utiliser la fonction Mid
Par exemple

Dim test
Dim res


test="bonjour"
res=Mid(test,1,3)

res contient maintenant "bon"
1 est le caractère début
3 celui de fin
3
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
9 juin 2011 à 15:57
Impeccable, j'était sur que 3 lettres pouvais remplacer mes 3 lignes de codes :)


_______________________
Imports System.Thinking
'La vie Roxxx un max à qui s'en donne la peine
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 juin 2011 à 13:07
Salut

la fonction mid est utilisée en vb6
en net utilises plutot SubString

test="bonjour" 
res= substring(test,0,3) 


attention la premier caractère indexé par 0

VB 6 vb.net
Len Length
Mid SubString
Replace Replace
InStr IndexOf
UCase ToUpper
LCase ToLower
Split Split
Join Join


Bonne prog
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
10 juin 2011 à 13:44
Salut, merci pour la précision ShayW, mais qu'elle est la différence car les deux codes marchent? Le code Vb6 est il source d'erreur dans .net ou bien est il plus lent ?

Et merci pour les quelques correspondances, dans un autre prog .net j'ai utilisé UCase et Lcase, va falloir rectifié sa :)


_______________________
Imports System.Thinking
'La vie Roxxx un max à qui s'en donne la peine
0

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

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 juin 2011 à 14:59
Oui je sais
Enfin on m'a dit vaux mieux utiliser les fonctions net peut etre plus performant en mémoire,rapidité

le lien n'est peut etre pas à voir mais il explique
des trucs intéressant avec les chaines

http://msdn.microsoft.com/en-us/library/aa260972(v=vs.60).aspx
0
SebSemos Messages postés 57 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 13 juin 2011 1
10 juin 2011 à 15:16
Ok, merci, le lien va me servir aussi pour mon autre progr :)


_______________________
Imports System.Thinking
'La vie Roxxx un max à qui s'en donne la peine
0
Rejoignez-nous