Optimiser le code (Eviter une dixaine de Tonnes de Conditions IF)

Résolu
Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010 - 25 août 2008 à 12:10
Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010 - 25 août 2008 à 21:58
Bonjour.


Je cherche un petit code optimisé,
si on me repond pas, je risque de fair:



if Num 0 then DATA "11"if Num 1 then DATA "12"if Num 2 then DATA "13"if Num 3 then DATA "14"if Num 4 then DATA "21"if Num 5 then DATA "22"if Num 6 then DATA "23"if Num 7 then DATA "24"if Num 8 then DATA "31"
(Etc .. sa finiras jamais ..)


J'ai un sorte de :



Const HASH = "1234"


Je cherche une [Public Function Lire (Num)]:




Msgbox lire(0)
'Donne : 11


Msgbox lire(5)
'Donne : 22


ect ..


J'arrive pas a la metre Mathematiquement, enfin .. x')


Si quelqun peu aider svplé ?


 





<hr />

(Si on a pas bien compris, alors lisez ca: sinon laissez tomber ce qui est bas):C'est un peu comme le binaire, si je met:

Const HASH = "01"
if Num0 then DATA "00"if Num 1 then DATA "01"if Num 2 then DATA "10"if Num 3 then DATA "11"

.. mais, dans mon code, le HASH c'est pas "01" ou "1234" mais c'est un treees long String (du Base64 pour etre plus precit :)

Technologie Reacen²

8 réponses

Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010
25 août 2008 à 21:58
C'est bon, plus la peine, j'ai presque trouver ..

const HASH = "abcdefghijklmnopqrstuvwxyzABCDEFGH....."

Dim M, NUM As Long





For x = 1 To Len(HASH)
M = Mid(HASH, x, 1)
For i = 1 To Len(HASH)


Text1.Text Text1.Text & "If Num " & NUM - 1 & " Then Data = " & M & Mid(HASH, i, 1) & vbCrLf
NUM = NUM + 1



Next i
Next x
Beep






Sa donne dans le Texte1 Ce que je doit metre dans la fonction Lire xD
C'est la plus grande fonction que Vb a pu connaitre dans sa vie ..

(+ de 2691 Lignes jsute dans la fonction  mais ca va ...)

C'est mieu que de croiser les bras et attendre (cent cinquante ans ) ..

Merci en tous cas ..

(J'ai trouver la solution moi mem, donc Problem Resolu par moi , des points CS de plus ? Hmmm ...)

Technologie Reacen²
3
cs_boutemine Messages postés 78 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 21 mars 2018 2
25 août 2008 à 12:41
C simple, tu dois créer une base de données et tout est réglé

webadmin www.vb4arab.com
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 août 2008 à 13:05
Salut,

Une base de données pour ca???? un peu lourd non?

Essaie peu etre:

Public Function Lire(Num As Long) As String
   Lire = CStr((Num \ 4) + 1) & CStr((Num Mod 4) + 1)
End Function<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 août 2008 à 13:13
Bonjour,

Un select case ferait mieux l'affaire

Mais j'utiliserais personnelement un Array, du genre (à main levée) :
Toto = Array(11,12,13,14,21,22,23,24,31)
DATA = toto(num)
où num seraitr la valeur en cause ...
0

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

Posez votre question
Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010
25 août 2008 à 14:35
Heu ... Merci pour tout ca, mais je sais fair des arrays au pire des cas je soré fair le mid(..) mais, je crois que je me suis mal exprimé ..

Remarquez :

const HASH = "abcdefghijklmnopqrstuvwxyz"

sa doit donner:

aa
ab
ac
ad
ae
af
ag
ah
ai
aj
ak
(apres 10ans ...)
ax
ay
az
ba
bb
bc
(apres 10ans encor)
by
bz
ca
cb
cc

ect ..

et je parle pas juste de l'alphabet, c'est en fonction du HASH, donc sa peut etre les abcd .. les numeros et les truc genre : _-*+ ...

Technologie Reacen²
0
Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010
25 août 2008 à 16:11
j'esper qu'on me comprend (aller PCPT, c'est le moment .. = / ) ..


Si HASH = "abcdefghijklmnopqrstuvwxyz"


alors Normalement, la fonction Lire que je cherche doit etre un peu commsa



msgbox lire(0)
' Donne "a"


autres Exemples:


Lire(0) Doit donner "a"
Lire(1) Doit donner "b"
Lire(2) Doit donner "c"
Lire(3) Doit donner "d"
Lire(4) Doit donner "e"
Lire(5) Doit donner "f"
Lire(6) Doit donner "g"


(Quand sa arrive o "z", et puis sa demande un autre + donc, 2caractere)




Lire(Un numero plus haut que Z) Doit donner "aa"
Lire(Un numero plus haut que Z+1) Doit donner "aa"
Lire(Un numero plus haut que Z+2) Doit donner "ab"
Lire(Un numero plus haut que Z+3) Doit donner "ac"
Lire(Un numero plus haut que Z+4) Doit donner "ad"


Apres avoir fini le "z" encor


Doit donner "ba"
Doit donner "bb"
Doit donner "bc"


(apres 50ans)


Doit donner "aaa"
Doit donner "aab"
Doit donner "aac"




Ect, vous comprenez hein ? Rassurez moi, car a mon nivo, je crois que sa etre troop non optimisé mon code ..


Merci de m'aider, ps: EN Fonction du hash, donc c'est pas juste du abcd... je change le hash celon divers entrées, entré par l'itulisateur ..
Merci d'avance.

Technologie Reacen²
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
25 août 2008 à 19:38
et dans cent cinquante ans ...

Beh si selon, t' es obligé de tout évaluer.
Je sais bien que je t' apprend rien; vu qu' il semble que tu es au courant de tout.
<hr />
      [*] Ce qui va sans dire. va mieux en le disant.
0
Reacen Messages postés 282 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 21 décembre 2010
25 août 2008 à 20:04
dans cent cinquante ans je seré encor en train de chercher l'optimisation si en m'aide pas mannant (sof si j'ai finalement decider de fair une centaines de If Num = x Then..)

Ollé, merci de m'aider, chui sur qu'il y a une solution, sinon y a surement une source sur le site qui traite ce sujet, sof que .. je met quoi comme mots clé ?

(source, vb6, moi, vouloir, fonction, tres, simple, qui, me, feras, eviter, beaucoup, de, conditions, allez, moteur, de, recherche, vb6, courage, et, trouve, la, moi)

Fin, je sais pas quoi fair, si on me donne un indice ?
Ca s'apelle quoi ce que je cherche ? :')

(sa si personne n'arrive a me donner un petit code)

Technologie Reacen²
0
Rejoignez-nous