Arguments des fonctions Instr et Right en variables

Résolu
pasrico Messages postés 14 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 11 décembre 2013 - Modifié par ucfoutu le 6/12/2013 à 06:55
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 11 déc. 2013 à 08:17
Bonjour,
bonjour
je suis en vb6 j'ai pris sur le net
la fonction : InStr(start, string1, string2, compare)

Le premier argument "start" (facultatif) permet de définir la position de départ de la recherche.

-----------------------------------------------------------
comment faire pour emplacer le 1 de start par une variable
----------------------------------------------------------

j'ai bien essayer en mettant pour essai
dim start as integer

j'ai aussi essayé
mysting = InStr(val(start), stock,"debut" , 10 )
mais ca passe pas
si je met un chiffre , c'est ok
--------------
ce que je veux faire (schematiquement):
stock=(une grande string)
je cherche une string dans stock
a=len(stock)
c="abcd"
b=str(stock,c)
maintenant je veux enlever la partie gauche
stock=right(stock,(a-b))

et je recommence tant que stock contient "abcd"
ce que je comprends pas c'est que j'ai declarer
dim a as integer
dim b as integer
dim stock as string
dim stock as string

merci de m'avoir lu

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2013 à 06:59
Bonjour,
Tu développes sous VB6 (tu le dis toi-même). Pourquoi alors avoir ouvert cette discussion dans la section VB.Net ? VB6 n'est pas VB.Net !
Je déplace cette discussion. Prends-en s'il te plait bonne note pour l'ouverture des prochaines.
J'en modifie par ailleurs le titre (Right(stock, ak) n'étant "parlants" que pour toi !)
0
pasrico Messages postés 14 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 11 décembre 2013
11 déc. 2013 à 04:15
je m'excuse mais la rubrique est "Visual Basic/ VB.NET" donc pas trop de choix.
il me semble que tu es trop à cheval, mais nous on demande juste un peu de compréhension et surtout de l'aide, sinon on ne serait pas ici
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2013 à 07:19
Pour en venir à tes difficultés
1) Tant en ce qui concerne la fonction Instr, qu'en ce qui concerne la fonction Right, l'argument start doit être un numérique
2) évite de nommer une variable par Start, qui est un nom utilisé par ailleurs par VB6. (choisis par exemple deb)
3) dans : mysting = InStr(val(start), stock,"debut" , 10 ) !
- qu'est cette valeur 10 ? l'argument compare n'accepte que 1 ou 0
- Val(start) n'a de sens que si start est de type string et représente un numérique. On ne voit pas où et comment tu as déclaré et initialisé Start ...
4) l'utilisation der variables dans les fonctions Instr et Right ne présente absolument aucune difficulté, pour autant que ces variables soient du type attendu.
5) str(stock,c) n'a aucun sens ! ouvre ton aide VB6 sur le mot str, s'il te plait !

0
pasrico Messages postés 14 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 11 décembre 2013
6 déc. 2013 à 11:49
bonjour et merci de m'avoir répondu
mais je me suis mal expliqué
------------- exemple
dim stock as variable
dim l as integer
dim z as integer
dim z1 as integer

stock=abcdefxxxxxxxxxxxabcdefyyyyyyyyyyyyyyyabcdefxxxxxxxxxxxxxetc..

1)je cherche la position de "abcdef"
z=InStr(stock,"abcdef") ici j'ai bien z=une certaine valeur numerique

2)je cherche la nouvelle position de "abcdef" mais comment faire pour demmarrer la 2eme recherche,si je mets
z1=InStr(stock,"abcdef") avec ca je retombe comme dans le cas 1)

z1=InStr(? ,stock,"abcdef")
si à la place du point d'interrogation je met un chiffre ca marche, par contre si je mets z(variable integer)
ca ne marche pas
excusez moi, mais je bute dessus, je fais autrement pour me dépanner, mais j'aimerais connaitre la solution
encore merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2013 à 13:10
Reviens s'il te plait avec le VRAI code tenté et non des "approximations", du genre dim stock as variable
Mets-le ici en copié/collé.
Et précise-nous la finalité exacte.
Si, comme je crois le deviner, tu ne développes pas en VB6, mais en VB5 (ce qui expliquerait bien des choses), dis-le également.
0

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

Posez votre question
pasrico Messages postés 14 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 11 décembre 2013
11 déc. 2013 à 04:07
bonjour
probleme résolu
j'ai été sur "developpez" et j'ai récupéré l'aide que j'avais déja
eu il y a un certain temps
pour info je programme en asm sur des micros atmel et je récupère les données en eprom
comme ces données sont en hex, j'avais donc fait un prog en vb6 qui traitait mes data
à partir de certaines occurences, mais comme j'ai dû formater,j'ai refais le prog mais
je me rappelai plus de la "function convertisseur".
si cette "function" intéresse qq un, je peux le mettre là ou tu me diras dans ce forum
merci de ton suivi
a+
0
pasrico Messages postés 14 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 11 décembre 2013
11 déc. 2013 à 04:51
 
'Function hexadecimal_en_decimal(chaine_hexa)
Sub convert()
resultat = 0
For i = Len(chaine_hexa) To 1 Step -1 ' Depuis i = longueur chaine à i = 1
longueur = Mid(chaine_hexa, i, 1) ' renvoit le (1) caractère à partir de la position i de la chaine (on commence donc par la fin)
position = InStr("0123456789ABCDEF", UCase(longueur)) - 1 ' On prend milieu, on met en majuscule au cas où on aurait écrit abcdef au lieu de ABCDEF,
' On met dans position la position du 1er caractère de milieu dans 0123456789ABCDEF et on retire 1 => on a converti de l'hexa en dec
If position >= 0 Then
valeur = position * (16 ^ (Len(chaine_hexa) - i)) ' Formule de maths de conversion
resultat = resultat + valeur
Else
resultat = 0
i = 0 ' Fin de la boucle en cas d'erreur
End If
Next
hexadecimal_en_decimal = resultat
End Sub
<code>
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2013 à 06:48
Je dois être très mal réveillé, car je ne vois pas le lien entre la question que tu avais posée (telle qu'elle était posée) et cette procédure de conversion.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2013 à 08:17
De surcroit :

- la procédure que tu montres n'est pas une fonction
- si on la transformait en fonction; elle retournerait toujours 0 (et pour cause !!!).

Regarde enfin ce que ferait ceci, tout bêtement :

toto = "H008080FF"
Val ("&" & toto)
0
Rejoignez-nous