depuis quelque temps , j'ai fait un telle script qui permet de ne pas avoir 30.000 variable et de les ranger.
Son fontionnement:
->le principe est de decomposer une variable long . d'un nombre , on extrait 9 chiffres
c'est assimilable à une fonction: 1 variable global ( pph0 ) pour entrée et 9 variable global a la sortie ( pph1 , pph1 , pph2 , pph3 , pph4 , pph5 , pph6 , pph7 , pph8 , pph9 )
ex: pph0 = 123456789
pph9 = 1 , pph8 = 2 , pph7 = 3 ....
cette astuce est utile pour stocker des donnée
->la recompilation est tres simple :
set variable to ( pph9*100000000 + pph8*10000000 + pph7*1000000 + pph6*100000 + pph5*10000 + pph4*1000 + pph3*100 + pph2*10+ 2 )
( dans l'exemple on changer seulement pph1 et garder tt le reste des info )
mon probleme
mon programme fct parfaitement avec la decomposition de 6 chiffres, mais depuis que j'ai introduit le 7eme , le 8 eme et le 9 eme chiffres ca ne fonctionne plus. j'obtient des resultat erroné ( seulement pour les deux premier chiffre )
j'ai essayer de trouver l'origine du probleme et a priori ca vient que la fonction set ne sait pas calculer avec 9 chiffres , ou du moins le resultat est un peu aleatoire , un coup l'addition est bonne et un coup ca foire
je voudrais bien savoir si le probleme vient de la et si c'est soluble. mais la je pense que je me fais des illusions...
toutefois si quelqu'un a le courage d'essayer de se pencher sur mon programme , je lui en saurai gré
le script:
begin PhExtractionChiffre ; LE PROGRAMME VA TESTER LE CHIFFRE DES MILLARDS PUIS CELUI D'AVANT JUSQU'AU UNITE ; PHH VA CONTENIR LE NOMBRE QUE L'ON VA TESTER long phh long test1 long test2 long test3 long test4 long test5 long test6 long test7 long test8 long test9 long OperationVariable1 long OperationVariable2 long OperationVariable3 long OperationVariable4 long OperationVariable5 long OperationVariable6 long OperationVariable7 long OperationVariable8 long OperationVariable9 short chiffre_1eme; chiffre des unité short chiffre_2eme; chiffre des dizaine short chiffre_3eme short chiffre_4eme short chiffre_5eme short chiffre_6eme short chiffre_7eme short chiffre_8eme short chiffre_9eme set phh to pph0 set test1 to 100000000 set test2 to 200000000 set test3 to 300000000 set test4 to 400000000 set test5 to 500000000 set test6 to 600000000 set test7 to 700000000 set test8 to 800000000 set test9 to 900000000 set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ); test du chiffre des milliaires set chiffre_9eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_9eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_9eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_9eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_9eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_9eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_9eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_9eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_9eme to 1 set phh to OperationVariable1 else set chiffre_9eme to 0 endif set test1 to ( test1 /10 ) ; je divise par 10 pour reculer d'un zero et donc tester le chiffre avant celui des milliards set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_8eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_8eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_8eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_8eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_8eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_8eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_8eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_8eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_8eme to 1 set phh to OperationVariable1 else set chiffre_8eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_7eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_7eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_7eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_7eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_7eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_7eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_7eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_7eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_7eme to 1 set phh to OperationVariable1 else set chiffre_7eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_6eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_6eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_6eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_6eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_6eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_6eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_6eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_6eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_6eme to 1 set phh to OperationVariable1 else set chiffre_6eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_5eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_5eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_5eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_5eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_5eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_5eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_5eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_5eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_5eme to 1 set phh to OperationVariable1 else set chiffre_5eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_4eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_4eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_4eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_4eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_4eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_4eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_4eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_4eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_4eme to 1 set phh to OperationVariable1 else set chiffre_4eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 > 0 ) set chiffre_3eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_3eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_3eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_3eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_3eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_3eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_3eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_3eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_3eme to 1 set phh to OperationVariable1 else set chiffre_3eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_2eme to 9 set phh to OperationVariable9 elseif ( OperationVariable8 >= 0 ) set chiffre_2eme to 8 set phh to OperationVariable8 elseif ( OperationVariable7 >= 0 ) set chiffre_2eme to 7 set phh to OperationVariable7 elseif ( OperationVariable6 >= 0 ) set chiffre_2eme to 6 set phh to OperationVariable6 elseif ( OperationVariable5 >= 0 ) set chiffre_2eme to 5 set phh to OperationVariable5 elseif ( OperationVariable4 >= 0 ) set chiffre_2eme to 4 set phh to OperationVariable4 elseif ( OperationVariable3 >= 0 ) set chiffre_2eme to 3 set phh to OperationVariable3 elseif ( OperationVariable2 >= 0 ) set chiffre_2eme to 2 set phh to OperationVariable2 elseif ( OperationVariable1 >= 0 ) set chiffre_2eme to 1 set phh to OperationVariable1 else set chiffre_2eme to 0 endif set test1 to ( test1 /10 ) set test2 to ( test2 /10 ) set test3 to ( test3 /10 ) set test4 to ( test4 /10 ) set test5 to ( test5 /10 ) set test6 to ( test6 /10 ) set test7 to ( test7 /10 ) set test8 to ( test8 /10 ) set test9 to ( test9 /10 ) set OperationVariable1 to ( phh - test1 ) set OperationVariable2 to ( phh - test2 ) set OperationVariable3 to ( phh - test3 ) set OperationVariable4 to ( phh - test4 ) set OperationVariable5 to ( phh - test5 ) set OperationVariable6 to ( phh - test6 ) set OperationVariable7 to ( phh - test7 ) set OperationVariable8 to ( phh - test8 ) set OperationVariable9 to ( phh - test9 ) if ( OperationVariable9 >= 0 ) set chiffre_1eme to 9 elseif ( OperationVariable8 >= 0 ) set chiffre_1eme to 8 elseif ( OperationVariable7 >= 0 ) set chiffre_1eme to 7 elseif ( OperationVariable6 >= 0 ) set chiffre_1eme to 6 elseif ( OperationVariable5 >= 0 ) set chiffre_1eme to 5 elseif ( OperationVariable4 >= 0 ) set chiffre_1eme to 4 elseif ( OperationVariable3 >= 0 ) set chiffre_1eme to 3 elseif ( OperationVariable2 >= 0 ) set chiffre_1eme to 2 elseif ( OperationVariable1 >= 0 ) set chiffre_1eme to 1 else set chiffre_1eme to 0 endif set pph1 to chiffre_1eme set pph2 to chiffre_2eme set pph3 to chiffre_3eme set pph4 to chiffre_4eme set pph5 to chiffre_5eme set pph6 to chiffre_6eme set pph7 to chiffre_7eme set pph8 to chiffre_8eme set pph9 to chiffre_9eme ;messagebox " %g %g %g %g %g %g %g %g %g " , chiffre_9eme , chiffre_8eme , chiffre_7eme , chiffre_6eme , chiffre_5eme , chiffre_4eme , chiffre_3eme , chiffre_2eme , chiffre_1eme set ph1 to 1 stopscript PhExtractionChiffre end PhExtractionChiffre
et voici la commande d'appellede la fonction
if (onactivate ==1 ) if ( ph1 == 0 ) set pph0 to ( random100 * 1000000 + random100 * 10000 + random100 * 100 + random100 ) startscript PhExtractionChiffre return else set ph1 to 0 endif endif
debug scipt ne detecte aucune erreur
Modifié par drakan, 28 mars 2010 - 21:48.