Arguments des fonctions Instr et Right en variables [Résolu]

Messages postés
14
Date d'inscription
mercredi 21 juillet 2010
Dernière intervention
11 décembre 2013
-
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
Afficher la suite 

Votre réponse

6 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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 !)
pasrico
Messages postés
14
Date d'inscription
mercredi 21 juillet 2010
Dernière intervention
11 décembre 2013
-
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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 !

Commenter la réponse de ucfoutu
Messages postés
14
Date d'inscription
mercredi 21 juillet 2010
Dernière intervention
11 décembre 2013
0
Merci
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
Commenter la réponse de pasrico
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
14
Date d'inscription
mercredi 21 juillet 2010
Dernière intervention
11 décembre 2013
0
Merci
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+
Commenter la réponse de pasrico
Messages postés
14
Date d'inscription
mercredi 21 juillet 2010
Dernière intervention
11 décembre 2013
0
Merci
 
'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>
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
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.
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
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)
Commenter la réponse de pasrico

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.