Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| variable ne décrémente pas | |
|
+4Jack Yannick flowerkinzy RMont 8 participants | |
Auteur | Message |
---|
RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: variable ne décrémente pas Dim 23 Sep 2012 - 19:17 | |
| Bonjour a tous. Apres avoir repondu au sujet des invisibles,voici une demande. je voudrai integrer ce bout de code dans un code existant mais j'ai un problème avec une variable qui malgres quelle soit integrée dans une boucle for to step -1 ne décrémente pas. ma question est pourquoi et comment y remedier. le resultat devrai etre 2 fois 5 dans le memo 31 ,puis 2 fois 4 dans le 32 etc etc.
merci d'avance pour votre ou vos réponses. [code] error_french ' essai ( nouvelle formule) 23/09/2012
dim i :' variable de boucle dim gauche : gauche = 100 :' distance bord gauche de l'écran dim a$ :' texte tapé dans memo 12 dim pt : pt = 5:' pt = points dim boucle :boucle =2 :' je veux entrer 2 boucles de données
label validation
caption 0," Essai Rmont sur memo horizontal (nouvelle formule)" width 0,1150 : height 0,700
alpha 10 :left 10,400:top 10,100 caption 10,"pour essai ,entrez 1,2,3,4,5 deux foix de suite "
memo 12:left 12,515:top 12,200:width 12,35:height 12,100 set_focus 12 on_key_down 12,validation
for i= 20 to 25 alpha i :left i,gauche:top i,340:caption i,"memo "+str$(i+10) memo i+10: left i+10,gauche-10: top i+10,365: width i+10,60: height i+10,45 gauche =gauche +150 hide 20 hide 30 next i
end
' ce que je voudrai faire validation: for boucle = 1 to 2 for pt =5 to 1 step -1 :' pas de décrémentation de pt a$=text$(12) if a$<>"" print "a$ = ",a$ :print "pt = ",pt: ' pour vérif if key_down_code=13 item_add 30 + val(a$),pt :' pt cette variable ne décrémente pas item_delete 12,1 end_if end_if next pt next boucle return | |
| | | flowerkinzy
Nombre de messages : 100 Date d'inscription : 23/09/2009
| Sujet: Re: variable ne décrémente pas Dim 23 Sep 2012 - 19:42 | |
| Je n'ai pas tout compris mais déja:
1- ta variable décrémente bien (si tu ajoute un "message pt" avant ton next pt), tu t'en rendras compte
2- Quand tu appuies entrée, tu affiches pt=5 et tu effaces la 1ère ligne donc a$="" et au prochain tour de boucle tu n'affiches plus rien. Peut-être, effacer après les 2 boucles
Mais peut*être qu'en expliquant plus clairement ce que tu veux faire...Voilà^^
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Sep 2012 - 20:28 | |
| si tu écris - Code:
-
for i% = 5 to 1 step -1 tu vas aller de 5 vers 1 Edit : Moi aussi j' ai du mal à comprendre ce que tu veux faire. mais dans la partie " ce que je veux faire " tu fais deux fois la deuxième boucle sans rien changer puisque "Boucle" n'intervient pas dans tes calculs dans les "if" En plus, si tu fais "1" puis "Entrée" tu sors des boucles donc tu repars de "5" et donc ton "pt" suivant sera "5" | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: variable ne décrémente pas Dim 23 Sep 2012 - 21:02 | |
| Tout à fait. Et j'ajouterai qu'il vaut mieux utiliser une variable entière dans une boucle for for boucle% - - - for pt% - - - | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 23 Sep 2012 - 23:10 | |
| YES !!! Même le BOSS est d'accord ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 5:46 | |
| Bonjour, Je ne comprend pas ce que tu souhaites faire. La boucle pt fonctionne, par contre utiliser le contenu d'une variable saisie pour calculer un n° d'objet a$=text$(12) ... item_add 30+val(a$),pt ... à mon avis ce n'est pas une bonne solution ou alors il faut que tu rajoutes des contrôles. Le premier essai que j'ai fait m'a provoqué le message OBJECT number out of range.... pourquoi tu ne vois pas d’évolution de pt: Le 1er passage dans ta boucle pt tu récupères dans a$ le contenu de 12 :ok donc tu affiches 5 dans le mémo calculé. mais ensuite tu fais un item_delete de ce qu'il y a dans 12 2eme passage dans la boucle pt: pt est bien décrémenté. a$="" car le item_delete précédent à viré ce qu'il y avait donc ton test a$<>"" fait que tu ne rajoutes pas la valeur pt dans ton mémo .... - Jack a écrit:
- Tout à fait.
Et j'ajouterai qu'il vaut mieux utiliser une variable entière dans une boucle for for boucle% - - - for pt% - - - Dans ce cas précis,Jack... rien n’empêche de faire des STEP 0.5 et là il faut bien un réel... | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 9:03 | |
| Bonjour Rmont, Je viens d'étudier ton code. Je pense que c'est ceci que tu voulais faire: - Code:
-
error_french ' essai ( nouvelle formule) 23/09/2012
dim i,gauche,pt,boucle dim a$ gauche = 100 :' distance bord gauche de l'écran
label validation
caption 0," Essai Rmont sur memo horizontal (nouvelle formule)" width 0,1150 : height 0,700
alpha 10 :left 10,400:top 10,100 caption 10,"pour essai ,entrez 1,2,3,4,5 deux foix de suite "
edit 12:left 12,515:top 12,200:width 12,35 set_focus 12 on_key_down 12,validation
for i= 20 to 25 alpha i :left i,gauche:top i,340:caption i,"memo "+str$(i+10) memo i+10: left i+10,gauche-10: top i+10,365: width i+10,60: height i+10,245 gauche =gauche +150 hide 20 hide 30 next i end
validation: if key_down_code=13 a$=text$(12):text 12,"" if numeric(a$)=0 then return if val(a$)<1 or val(a$)>5 then return for boucle = 1 to 2 for pt =5 to 1 step -1 print "a$=";a$;" pt=";pt: ' pour vérif item_add 30+val(a$),str$(pt) next pt next boucle end_if return J'ai mis un edit à la place du memo 12 et j'ai rajouté 2 tests pour savoir si la valeur entrée dans l'édit est un chiffre et si le chiffre est compris entre 1 et 5. Ainsi, ça évite d'avoir des erreurs! Tu verras que pt, décrémente bien avec la ligne de vérif. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 9:40 | |
| Bravo Bignono, tu as réussi à trouver ce que voulais Rmont (je pense). J'ai allongé les mémo(s) et précisé l'action à faire.... Une remarque: on peut taper le dans désordre, çà marche... - Code:
-
error_french ' essai ( nouvelle formule) 23/09/2012
dim i,gauche,pt,boucle dim a$ gauche = 100 :' distance bord gauche de l'écran
label validation
caption 0," Essai Rmont sur memo horizontal (nouvelle formule)" width 0,1150 : height 0,700
alpha 10 :left 10,400:top 10,100 caption 10,"pour essai ,entrez 1(Entrée), 2(Entrée), 3(Entrée), 4(Entrée), 5(Entrée) deux foix de suite "
edit 12:left 12,515:top 12,200:width 12,35 set_focus 12 on_key_down 12,validation
for i= 20 to 25 alpha i :left i,gauche:top i,280:caption i,"memo "+str$(i+10) memo i+10: left i+10,gauche-10: top i+10,300: width i+10,60: height i+10,300 gauche =gauche +150 hide 20 hide 30 next i end
validation: if key_down_code=13 a$=text$(12):text 12,"" if numeric(a$)=0 then return if val(a$)<1 or val(a$)>5 then return for boucle = 1 to 2 for pt =5 to 1 step -1 print "a$=";a$;" pt=";pt: ' pour vérif item_add 30+val(a$),str$(pt) next pt next boucle end_if return
A+ | |
| | | flowerkinzy
Nombre de messages : 100 Date d'inscription : 23/09/2009
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 18:20 | |
| bah voilà, avec 2codes supplémentaires, je viens de comprendre.^^ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 18:33 | |
| Personnellement, parfois il m’en faut plus ! | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: variable ne décrémente pas Lun 24 Sep 2012 - 19:35 | |
| je pense que j'ai du mal expliqué mon probleme alors voici le programe d'origine que j'essai de transformer à cause des "INPUT". ce prg fonctionne tres bien a la seule condition de ne pas faire d'erreur dans l'entrée des valeurs. si vous voulez faire un essai, je vous propose de faire ceci : - a la 1er question "combien de chevaux" ;repondez 20 - a la 2 em question "combien de pronostiqueurs" ;repondez 2 - ensuite il y a une ligne qui dit : entrez les n° dans l'ordre des pronostiqueurs alors entrez : 7,10,9,4,2,11,16,14,5,18 puis 7,9,4,10,2,16,15,8,14,5. aux questions suivantes ,repondez 0 (zero) (c'est pour aller plus vite). l'ecran final recapitule les points donnés par les 2 boucles. ex le 7 est cité 2 fois en premier donc 2 fois 10 points =20. c'est ce que j'essaie de reproduire dans les memo 31 a 35 de mon code nouveau - Code:
-
error_french ' ************************************************ ' * Programme sur les pronostiques hippiques * ' * par Rmont * ' ************************************************ ' TURF N° 5 bis pour entrée de 10 chevaux
' déclaration des variables
' i , j = variable de boucle ' a , t et t1 = variables temporaires ' y = pour entrée des points ' ccc = nombre de chevaux dans cette course. cette variable aura une valeur variable entre 13 et 20 ' maxi = maximun de chevaux = 20 ' dif = difference entre maxi et ccc ' pro = nombre de pronostiqueurs ' conc = tableau des concurrents ' ch = n° du cheval ' fs,cp,fa,tp rajout de points pour forme saisonniere,parcours,forme actuelle,tuyaux
dim a,i,j,t,t1,y,x,z,pro,ch dim fs,cp,fa,tp dim ccc,maxi,dif dim wf,hf : ' Longueur et Largeur écran en pixels Dim conc(20,1) label recom label debutboucle label sortieboucle label affichage label clicked maxi = 20
' ********** Ecran plus grand ( maxi ) *********** wf = 1150 : hf = 800 left 0,0 : top 0,0 : width 0,wf : height 0,hf caption 0,"Jeux sur quinté + "
' ******* début du programme ********** recom: input " Combien de chevaux dans cette course ? "; ccc If ccc<13 Or ccc>20 then Goto recom print :print input " Combien de pronostiqueurs ? ";pro print "Entrez les n° dans l'ordre des differents pronostiqueurs" ' ********* cadre pour les points ************ 2d_pen_color 200,0,0 2d_rectangle 35,150,100,250 2d_rectangle 100,150,165,250 2d_rectangle 165,150,230,250 2d_rectangle 230,150,295,250 2d_rectangle 295,150,360,250 2d_rectangle 360,150,425,250 2d_rectangle 425,150,490,250 2d_rectangle 490,150,555,250 2d_rectangle 555,150,620,250 2d_rectangle 620,150,685,250
print_locate 50,165 : print "10 pts" print_locate 50,185 : print "Pour" print_locate 50,200 : print "Cheval" print_locate 50,220 : print "N° "
print_locate 115,165 : print "9 pts" print_locate 115,185 : print "Pour" print_locate 115,200 : print "Cheval" print_locate 115,220 : print "N° "
print_locate 180,165 : print "8 pts" print_locate 180,185 : print "Pour" print_locate 180,200 : print "Cheval" print_locate 180,220 : print "N°"
print_locate 245,165 : print "7 pts" print_locate 245,185 : print "Pour" print_locate 245,200 : print "Cheval" print_locate 245,220 : print "N°"
print_locate 310,165 : print "6 pts" print_locate 310,185 : print "Pour" print_locate 310,200 : print "Cheval" print_locate 310,220 : print "N°"
print_locate 375,165 : print "5 pts" print_locate 375,185 : print "Pour" print_locate 375,200 : print "Cheval" print_locate 375,220 : print "N°"
print_locate 440,165 : print "4 pts" print_locate 440,185 : print "Pour" print_locate 440,200 : print "Cheval" print_locate 440,220 : print "N°"
print_locate 505,165 : print "3 pts" print_locate 505,185 : print "Pour" print_locate 505,200 : print "Cheval" print_locate 505,220 : print "N°"
print_locate 570,165 : print "2 pts" print_locate 570,185 : print "Pour" print_locate 570,200 : print "Cheval" print_locate 570,220 : print "N°"
print_locate 635,165 : print "1 pt" print_locate 635,185 : print "Pour" print_locate 635,200 : print "Cheval" print_locate 635,220 : print "N°"
' ****** Initialisation des N° de chevaux ******** for i = 1 to maxi conc(i,0)= i next i
' *************** Entrée des points ******************
For j = 1 To pro y =70 For i = 10 To 1 Step -1 print_locate y,220 : print " " print_locate y,220 input ch conc(ch,1) = conc(ch,1)+i conc(ch,0)=ch y = y + 65 Next i Next j
' ******* rajout de points pour forme,parcours, ect ***********
print:print:print print " + 8 points pour forme saisonniere aux n° : ZERO pour sortir" fs = 8 : y = 65 while ch <> 0 print_locate y,295 input ch conc(ch,1)=conc(ch,1)+fs y = y + 50 end_while ch=1
print " + 7 points pour capacité parcours aux n° : Zero pour sortir" cp = 7 : y = 65 while ch <> 0 print_locate y,335 input ch conc(ch,1)=conc(ch,1)+cp y = y + 50 end_while ch=1
print " + 10 points forme actuelle aux n° : Zero pour sortir" fa = 10 : y = 65 while ch <> 0 print_locate y,385 input ch conc(ch,1)=conc(ch,1)+fa y = y + 50 end_while ch=1
print " de 14 à 10 points pour tuyaux pistes aux n° : Zero pour sortir" tp = 14 : y = 65 while ch <> 0 print_locate y,435 input ch conc(ch,1)=conc(ch,1)+tp tp=tp-1 y = y + 50 end_while
' *********** tri methode shell *********** ' ** le tri se fait sur les points pour ensuite classer les chevaux** ' ** du plus grand nombre de points au plus petit ** cls debutboucle: a=0 for i= 1 to maxi-1 if conc(i,1)>=conc(i+1,1) then goto sortieboucle t = conc(i,1) t1 = conc(i,0) conc(i,1) = conc(i+1,1) conc(i,0) = conc(i+1,0) conc(i+1,1) = t conc(i+1,0) = t1 a = 1 sortieboucle: next i if a = 1 then goto debutboucle ' ******* affichage horizontal ******* dif = maxi - ccc x=400 : y=25 print_x_locate y print " LISTE TRIEE DU PLUS JOUE AU MOINS JOUE " x=0:y=0 ' **** Favoris **** x=100 : y= 50 :z=95 print_locate x-90,z-20 : print "POINTS" print_locate x-90,z : print "CHEVAL N°" print_locate x,y :print " FAVORIS OUTSIDERS DELAISSES" y=75 for i = 1 to 6 print_locate x,y : print conc(i,1) :' points print_locate x,z : print conc(i,0) :' cheval n° x=x+40 next i x=x+80 ' *** Outsiders *** for i =7 to 12 y=75 :z=95 print_locate x,y : print conc(i,1) :' points print_locate x,z : print conc(i,0) :' cheval n° x=x+40 next i x=x+80 ' *** Delaissés *** y=75 :z=95 for i = 13 to maxi - dif print_locate x,y : print conc(i,1) :' points print_locate x,z : print conc(i,0) :' cheval n° x=x+40 next i x=0:y=0 ' ******** Jeux a faire *********** affichage: x=150 print_x_locate x print :print:print:print
print " Jeu n°1 ---> "+ str$(conc(1,0))+" , "+str$(conc(2,0))+" , "+str$(conc(3,0))+" , "+str$(conc(4,0))+" , "+str$(conc(6,0)) print print " Jeu n°2 ---> "+ str$(conc(1,0))+" , "+str$(conc(2,0))+" , "+str$(conc(3,0))+" , "+str$(conc(5,0))+" , "+str$(conc(7,0)) print print " Jeu n°3 ---> "+ str$(conc(1,0))+" , "+str$(conc(2,0))+" , "+str$(conc(4,0))+" , "+str$(conc(7,0))+" , "+str$(conc(8,0)) print print " Jeu n°4 ---> "+ str$(conc(1,0))+" , "+str$(conc(3,0))+" , "+str$(conc(4,0))+" , "+str$(conc(5,0))+" , "+str$(conc(9,0)) print print " Jeu n°5 ---> "+ str$(conc(1,0))+" , "+str$(conc(5,0))+" , "+str$(conc(6,0))+", "+str$(conc(7,0))+" , "+str$(conc(10,0)) print print " Jeu n°6 ---> "+ str$(conc(2,0))+" , "+str$(conc(3,0))+" , "+str$(conc(5,0))+", "+str$(conc(6,0))+" , "+str$(conc(8,0)) print print " Jeu n°7 ---> "+ str$(conc(2,0))+" , "+str$(conc(4,0))+" , "+str$(conc(5,0))+", "+str$(conc(6,0))+" , "+str$(conc(7,0)) print print " Jeu n°8 ---> "+ str$(conc(3,0))+" , "+str$(conc(4,0))+" , "+str$(conc(6,0))+", "+str$(conc(7,0))+" , "+str$(conc(8,0)) print print " Jeu n°9 ---> "+ str$(conc(1,0))+" , "+str$(conc(2,0))+" , "+str$(conc(3,0))+", "+str$(conc(9,0))+" , "+str$(conc(7,0))+", "+str$(conc(5,0)) print print " Jeu n°10 ---> "+ str$(conc(1,0))+" , "+str$(conc(3,0))+" , "+str$(conc(4,0))+", "+str$(conc(8,0))+" , "+str$(conc(6,0))+", "+str$(conc(10,0))
button 1 top 1,540 left 1,450 width 1,250 height 1,30 caption 1,"clique ici pour sortir" on_click 1,clicked end
clicked: print_locate 500,500 print "A la prochaine" wait 500 terminate [/left] | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 20:23 | |
| Salut Rmont,
Tu me rappelle quelqu'un, quand il est arrivé sur ce forum... (je parle de moi). Tu codes avec Panoramic exactement comme si c'était QwickBasic.
Il faut que tu change ta méthode....(garde ton source actuel, car il contient le fond)
Pour commencer, je te conseille d'utiliser les objets de Panoramic, remplace INPUT par 2 EDIT accompagnés de 2 ALPHA pour l'entée des 2 premières données nombre de chevaux et nombre de pronostiqueurs.
Je vais t'écrire cette partie de programme (et au passage, j'utiliserai la méthode "Klaus et autres"). Je vais essayer d'être pédagogique avec un maximum de commentaire.
Laisse-moi un peu de temps....
à bientôt.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 24 Sep 2012 - 21:31 | |
| hum..hum...nôtre ami Rmont serait il turfiste ... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 21:36 | |
| Bonsoir Rmont, Je viens d'essayer ton programme. beaucoup de print, print_locate bref des commandes qu'il faut proscrire dans un environnement avec des fenêtres. Il faut que tu commences à faire un bilan des besoins. Dans un premier temps, pour ton programme, je verrais ceci : - Pour la saisie du nombre de chevaux ainsi que du nombre de pronostiqueur un ALPHA ainsi qu'un champs de saisie EDIT - Pour le tableau, au lieu de passer par des 2D_rectangle, je verrais bien l'utilisation de GRID Regarde déjà dans la doc l'utilisation de ces différents objets et essaye de les mettre en place. Si tu coinces montre-nous dans ce cas ce que tu as fait et on pourra a ce moment te donner des conseils... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 22:11 | |
| @ Rmont Bon voilà un premier jet qui te permettra d'utiliser Panoramic avec les objets. met de la couleur pour les commentaires (menu choix de l'éditeur) Décortique bien le code et essai de le comprendre.... Bon courage. - Code:
-
' Salut Rmont (Remarque: on ne parle pas des SUB(), je te la fait à l'ancienne )
' Pour commencer FORM 0
dim wf%,hf%:wf% = 1150 : hf% = 800 width 0,wf% : height 0,hf% left 0,int((screen_x/2)-width(0)/2):top 0,int((screen_y/2)-height(0)/2):' centrage de la fenêtre (FORM 0) sur l'écran label fin:on_close 0,fin:' pour sortir par la croix rouge
' ensuite nous allons monter l'ossature (squelette) du programme ' Nous avons besoin de pouvoir créer des labels, de déclarer des variables, ' et de créer des objets.
' il nous faut pour commencer 2 objets pour que l'utilisateur ' puisse saisir le nombre de chevaux et de pronostiqueurs dim no%:' cette variable va nous servir uniquement pour créer des objets Panoramic (objets système) label gui:' ce label va contenir les objets gosub gui:' COMMANDE: execute la section gui (déclaration des objets et de leurs noms sous forme de variable numérique) label les_dim:gosub les_dim label les_label:gosub les_label ' pour lancer le programme set_focus edit_nb_chevaux%:' place le curseur dans le premier objet on_key_up edit_nb_chevaux%,nb_chevaux END:' fin de la mise en place de l'ossature ' ============================================================================== nb_chevaux: if key_up_code=13 then gosub nb_ch2 return
nb_ch2: if numeric(text$(edit_nb_chevaux%))=0 then return ccc%=val(text$(edit_nb_chevaux%)):' incrémente la variable ' .................. ici tu peux limiter la saisie à un certain nombre ' on continue inactive alpha_nb_chevaux%:inactive edit_nb_chevaux%:' désactive pour passer à la saisie suivante active alpha_nb_Ponostiqueur%:active edit_nb_Ponostiqueur%:' active pour passer à la saisie suivante set_focus edit_nb_Ponostiqueur%:' donne le focus pour la suite on_key_up edit_nb_Ponostiqueur%,nb_pro return
' **** nb_pro: if key_up_code=13 then gosub nb_pro2 return
nb_pro2: if numeric(text$(edit_nb_Ponostiqueur%))=0 then return pro%=val(text$(edit_nb_Ponostiqueur%)) ' .................. ici tu peux limiter la saisie à un certain nombre inactive alpha_nb_Ponostiqueur%:inactive edit_nb_Ponostiqueur% ' on continue caption 0,"Nombre de Chevaux: "+str$(ccc%)+string$(10," ")+"Nombre de Pronostiqueurs: "+str$(pro%) return
' ======== les_label: ' ici on déclare les labels au fur et à mesure de nos besoins label nb_chevaux,nb_ch2,nb_pro,nb_pro2 ' .... return '===== les_dim: ' ici on déclare les variables au fur et à mesure de nos besoins dim ccc%,pro%:' pourquoi le %. parce que les chevaux ou les pronostiqueurs sont entier donc on délare un entier ' .... return '===== gui: ' ici on déclare les variables pour numéroter les objets système dim alpha_nb_chevaux%,edit_nb_chevaux%,alpha_nb_Ponostiqueur%,edit_nb_Ponostiqueur% ' ensuite on créer les objets ' les chevaux no%=no%+1:alpha_nb_chevaux%=no%:alpha no%:' l'alpha est créer et son numéro est alpha_nb_chevaux% top no%,13:left no%,12:' on positionne l'alpha font_bold no%:' caractères en gras caption no%,"Nombre de Chevaux:" no%=no%+1:edit_nb_chevaux%=no%:edit no% width no%,30:' on adapte la largeur de l'édit pour entrer 2 ou 3 caractères top no%,10:left no%,10+width(alpha_nb_chevaux%)+5 ' les pronostiqueurs no%=no%+1:alpha_nb_Ponostiqueur%=no%:alpha no%:' l'alpha est créer et son numéro est alpha_nb_Ponostiqueur% top no%,13:left no%,left(edit_nb_chevaux%)+width(edit_nb_chevaux%)+40 font_bold no%:' caractères en gras caption no%,"Nombre de Pronostiqueurs:" inactive no%:' pour obliger l'utilisateur à commencer par le nombre de chevaux no%=no%+1:edit_nb_Ponostiqueur%=no%:edit no% width no%,30:' on adapte la largeur de l'édit pour entrer 2 ou 3 caractères top no%,10:left no%,left(alpha_nb_Ponostiqueur%)+width(alpha_nb_Ponostiqueur%)+5 inactive no%:' pour obliger l'utilisateur à commencer par le nombre de chevaux
' ici d'autres objets par la suite ' ----- return:' fin de la section gui '===== fin: terminate
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Lun 24 Sep 2012 - 22:18 | |
| Une petite amélioration, remplace la ligne 32 par if numeric(text$(edit_nb_chevaux%))=0 then text edit_nb_chevaux%,"":returnet la ligne 48 par if numeric(text$(edit_nb_Ponostiqueur%))=0 then text edit_nb_Ponostiqueur%,"":returnA+ | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 3:44 | |
| Pour commencer, c'est un bon début... A parti du programme de Jean-claude voici un exemple d'utilisation du grid dans ton programme : - Code:
-
' Salut Rmont (Remarque: on ne parle pas des SUB(), je te la fait à l'ancienne )
' Pour commencer FORM 0
dim wf%,hf%:wf% = 1150 : hf% = 800 width 0,wf% : height 0,hf% left 0,int((screen_x/2)-width(0)/2):top 0,int((screen_y/2)-height(0)/2):' centrage de la fenêtre (FORM 0) sur l'écran label fin:on_close 0,fin:' pour sortir par la croix rouge
' ensuite nous allons monter l'ossature (squelette) du programme ' Nous avons besoin de pouvoir créer des labels, de déclarer des variables, ' et de créer des objets.
' il nous faut pour commencer 2 objets pour que l'utilisateur ' puisse saisir le nombre de chevaux et de pronostiqueurs dim no%:' cette variable va nous servir uniquement pour créer des objets Panoramic (objets système) label gui:' ce label va contenir les objets gosub gui:' COMMANDE: execute la section gui (déclaration des objets et de leurs noms sous forme de variable numérique) label les_dim:gosub les_dim label les_label:gosub les_label ' pour lancer le programme set_focus edit_nb_chevaux%:' place le curseur dans le premier objet on_key_up edit_nb_chevaux%,nb_chevaux END:' fin de la mise en place de l'ossature ' ============================================================================== nb_chevaux: if key_up_code=13 then gosub nb_ch2 return
nb_ch2: if numeric(text$(edit_nb_chevaux%))=0 then return ccc%=val(text$(edit_nb_chevaux%)):' incrémente la variable ' .................. ici tu peux limiter la saisie à un certain nombre ' on continue inactive alpha_nb_chevaux%:inactive edit_nb_chevaux%:' désactive pour passer à la saisie suivante active alpha_nb_Ponostiqueur%:active edit_nb_Ponostiqueur%:' active pour passer à la saisie suivante set_focus edit_nb_Ponostiqueur%:' donne le focus pour la suite on_key_up edit_nb_Ponostiqueur%,nb_pro return
' **** nb_pro: if key_up_code=13 then gosub nb_pro2 return
nb_pro2: if numeric(text$(edit_nb_Ponostiqueur%))=0 then return pro%=val(text$(edit_nb_Ponostiqueur%)) ' .................. ici tu peux limiter la saisie à un certain nombre inactive alpha_nb_Ponostiqueur%:inactive edit_nb_Ponostiqueur% ' on continue caption 0,"Nombre de Chevaux: "+str$(ccc%)+string$(10," ")+"Nombre de Pronostiqueurs: "+str$(pro%) gosub AfficheSaisie return
' ======== les_label: ' ici on déclare les labels au fur et à mesure de nos besoins label nb_chevaux,nb_ch2,nb_pro,nb_pro2,AfficheSaisie ' .... return '===== les_dim: ' ici on déclare les variables au fur et à mesure de nos besoins dim ccc%,pro%:' pourquoi le %. parce que les chevaux ou les pronostiqueurs sont entier donc on délare un entier dim i%,j% : ' variables utilisées pour faire des boucles ' .... return '===== gui: ' ici on déclare les variables pour numéroter les objets système dim alpha_nb_chevaux%,edit_nb_chevaux%,alpha_nb_Ponostiqueur%,edit_nb_Ponostiqueur% dim TAB_1% : ' tableau de saisie
' ensuite on créer les objets ' les chevaux no%=no%+1:alpha_nb_chevaux%=no%:alpha no%:' l'alpha est créer et son numéro est alpha_nb_chevaux% top no%,13:left no%,12:' on positionne l'alpha font_bold no%:' caractères en gras caption no%,"Nombre de Chevaux:" no%=no%+1:edit_nb_chevaux%=no%:edit no% width no%,30:' on adapte la largeur de l'édit pour entrer 2 ou 3 caractères top no%,10:left no%,10+width(alpha_nb_chevaux%)+5 ' les pronostiqueurs no%=no%+1:alpha_nb_Ponostiqueur%=no%:alpha no%:' l'alpha est créer et son numéro est alpha_nb_Ponostiqueur% top no%,13:left no%,left(edit_nb_chevaux%)+width(edit_nb_chevaux%)+40 font_bold no%:' caractères en gras caption no%,"Nombre de Pronostiqueurs:" inactive no%:' pour obliger l'utilisateur à commencer par le nombre de chevaux no%=no%+1:edit_nb_Ponostiqueur%=no%:edit no% width no%,30:' on adapte la largeur de l'édit pour entrer 2 ou 3 caractères top no%,10:left no%,left(alpha_nb_Ponostiqueur%)+width(alpha_nb_Ponostiqueur%)+5 inactive no%:' pour obliger l'utilisateur à commencer par le nombre de chevaux no%=no%+1:TAB_1%=no%
' ici d'autres objets par la suite ' ----- return:' fin de la section gui '=====
' ----------------------------------------------------- ' Création du tableau de cellule ' ----------------------------------------------------- AfficheSaisie: GRID TAB_1% : ' le tableau de cellule ' on positionne le tableau de cellule par rapport à la fenetre LEFT TAB_1%,5 TOP TAB_1%,50 WIDTH TAB_1%,102+(51.2*ccc%) : ' on defini sa largeur HEIGHT TAB_1%,26*(pro%+1) : ' ainsi que sa hauteur ' on indique le nombre de ligne et de colonne GRID_ROW TAB_1%,pro%+1 GRID_COLUMN TAB_1%,ccc%+1 : GRID_COLUMN_WIDTH TAB_1%,50 : ' 50px de large ' la 1ere colonne est plus large pour afficher "Pronostiqueur" grid_one_column_width TAB_1%,1,100 ' on met à jour les intitulés FOR i%=1 TO ccc%: GRID_WRITE TAB_1%,1,i%+1,STR$(ccc%-i%+1)+"Pts" : NEXT i% FOR i%=1 TO pro%: GRID_WRITE TAB_1%,i%+1,1,"Pronostiqueur "+STR$(i%) : NEXT i% ' on defini un evenement de clic de souris sur les cellules LABEL ClicCellule:ON_CLICK TAB_1%,ClicCellule return ' ----------------------------------------------------- ' Procedure de traitement d'un clic sur une cellule ' ----------------------------------------------------- ClicCellule: ' Declaration de quelques variables temporaires DIM NumCheval$,NumCheval%,NumCol%,NumLigne%,msg_err$ ' calcul des coordonnées de la cellule qui a été cliquée NumLigne%=grid_y_to_row(TAB_1%,mouse_y_position(TAB_1%)) NumCol% = grid_x_to_column(TAB_1%,mouse_x_position(TAB_1%)) REPEAT msg_err$="" ' boite de saisie NumCheval$=MESSAGE_INPUT$("Entrez le numéro du cheval","Cheval n°",GRID_READ$(TAB_1%,NumLigne%,NumCol%)) ' on teste si c'est une valeur numerique IF NUMERIC(NumCheval$)=0 ' on autorise l'utilisateur d'effacer un numero IF NumCheval$<>"" THEN msg_err$="Mauvaise saisie, veuillez recommencer!" ELSE NumCheval%=VAL(NumCheval$) ' on verifie que le n° est bien compris dans la plage de saisie IF NumCheval%<1 OR NumCheval%>ccc% msg_err$="Numero de cheval incorrect !" ELSE ' on vérifie que ce numero n'a pas déjà été saisie dans la ligne FOR i%=2 TO ccc%+1 IF GRID_READ$(TAB_1%,NumLigne%,i%)=NumCheval$ THEN msg_err$="Ce numéro est déjà saisi !":EXIT_FOR NEXT i% END_IF END_IF IF msg_err$<>"" THEN i%=MESSAGE_ERROR_OK(msg_err$) UNTIL msg_err$="" ' C'est ok, on met à jour la cellule avec la valeur saisie GRID_WRITE TAB_1%,NumLigne%,NumCol%,NumCheval$ ' on supprime les variables temporaire FREE NumCheval$:FREE NumCheval%:FREE NumCol%:FREE NumLigne%:FREE msg_err$ RETURN
fin: terminate | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 7:27 | |
| Bien Nardo, le GRID convient parfaitement pour la saisie et l'affichage. A la différence que la saisie est plus lourde pour l'utilisateur (clic dans la cellule, puis saisie et rebelote) qu'avec des mémo ou list, mais c'est pas plus grave que çà. Je vois que tu as utilisé des variables temporaires, c'est une bonne façon de s'initier au procédures. Voilà Rmont, tu as du grain à moudre.... A+ | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 7:40 | |
| - Jean Claude a écrit:
- Bien Nardo, le GRID convient parfaitement pour la saisie et l'affichage. A la différence que la saisie est plus lourde pour l'utilisateur (clic dans la cellule, puis saisie et rebelote) qu'avec des mémo ou list, mais c'est pas plus grave que çà.
Je vois que tu as utilisé des variables temporaires, c'est une bonne façon de s'initier au procédures.
Voilà Rmont, tu as du grain à moudre....
A+ Bonjour Jean-claude ! Pour basculer en procédure avec passage de paramètre, c'est facilement modifiable. Si tu veux essayer, quelques pistes: sur l’évènement on_click (qui reste un label standard), tu fais un appel à une procédure avec passage de paramètre, par ex : - Code:
-
ClicCellule(grid_x_to_column(TAB_1%,mouse_x_position(TAB_1%)),grid_y_to_row(TAB_1%,mouse_y_position(TAB_1%))) Éventuellement tu peux passer aussi TAB_1% en paramètre si tu as l'intention de l'utiliser pour un autre GRID... Et dans la procédure ClicCellule, il te faut déclarer toutes les variables en DIM_LOCAL .... c'est tout ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 7:51 | |
| Hé oui, c'est finalement plus simple. Bon A+, j'ai du codage en cours....(pour moi) | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 19:43 | |
| bonjour a tous. merci pour vos réponses. hier je vous ai donné mon prg source que je me sers depuis tres longtemps ;plusieurs années.son origine etant le langage basic de l'amiga 500. c'est pourquoi je voulais le transformer en langage panoramic. ce que je cherche ,c'est de garder la meme methode pour entrer les numeros des chevaux ,c'est a dire a la suite sans passer par des systèmes de validations divers. en realité je me sers de 5 pronostiqueurs ce qui fait 50 entrées (5 fois 10 entrées).v'est pourquoi j'ai refait une partie ( voir le post du 23/09)que je veux inclure dans une nouvelle presentation qui est deja fonctionnelle. si je peux mieux resumer mon projet. imaginons une course quelconque soit par ex une course de voitures sur un circuit. - les données : 2 tours de circuit (ou plus) - les données : 5 voitures n° 1,2,3,4,5 - les données: les primes --->5 euros a la voiture 1 premiere au 1er tour --->4 2 eme 1er tour --->3 3 eme --->2 4 eme ---->1 5 eme -l'ordre peut-etre n'importe lequel: ex 3 ,2 ,5, 1, 4 donc 5 euro pour n°3 ; 4 euro pour n°2 ;3 euro pour n°5;2 euro pour n°1;1euro pour n°4 au 2eme tour ,l'ordre peut etre different c'est a dire par ex :5,3,2,1,4 donc 5 E pour n°5; 4 E pour n°3; 3 E pour n°2 ;2E pour n°1;1 E pour n°4
-a la fin de cette course ,il ,reste a faire d'addition des gains pour les n° de voitures voiture n° 1 gain 2+2=4 voiture n° 2 gain 4+3=7 voiture n° 3 gain 5+4=9 voiture n° 4 gain 1+1=2 voiture n° 5 gain 3+5=8 -ensuite je classe par ordre decroissant des gains. voila pourquoi je prefere rester sur le post du 23/09. je vous remercie pour votre attention rmont
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 20:10 | |
| - Rmont a écrit:
- voila pourquoi je prefere rester sur le post du 23/09.
je vous remercie pour votre attention rmont Explique moi pourquoi tu veux le refaire en Panoramic , je ne comprend pas. A+ | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 20:28 | |
| en panoramic veut dire avec la langage que jack developpe. moi , je suis resté sur un langage basic ancien. --->basic amiga 500 je ne cherche pas a modifier mon prg de référence mais a inclure mon 1er exemple dans une portion de code deja refaite. c'est pourquoi j'ai repris cet exemple avec un circuit voitures a 2 tours ,des primes et 5 voitures. c'est tout pour ce soir . bonne soirée a tous
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: variable ne décrémente pas Mar 25 Sep 2012 - 22:35 | |
| Dommage que tu ne cherches pas à mettre au gout du jour ton programme avec toutes les possibilités que t'offre Panoramic. Si tu veux rester dans le même style de programmation qu'avant cad commandes 2D, print, locate,etc... je ne pense pas que Panoramic soit adapté à ce que tu souhaites faire... il est plus orienté vers des applic graphique mettant en oeuvre des objets windows. Peut être qu'avec QuickBasic tu seras plus à l'aise ? Tu retrouveras à peu près la même syntaxe que le source que tu nous a montré... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: variable ne décrémente pas Mer 26 Sep 2012 - 7:06 | |
| Je suis d'accord avec Nardo, QuickBasic est plus proche de ce que tu souhaites...
Bonne continuation...
Dernière édition par Jean Claude le Mer 26 Sep 2012 - 12:49, édité 1 fois | |
| | | Contenu sponsorisé
| Sujet: Re: variable ne décrémente pas | |
| |
| | | | variable ne décrémente pas | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |