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 |
|
|
| Nombre d'objets | |
|
+4Jack 659_minifly Nardo26 JL35 8 participants | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Nombre d'objets Sam 23 Oct 2010 - 22:06 | |
| Je faisais une confusion, je croyais que la fonction NUMBER_OBJECTS donnait le dernier numéro d'objet utilisé, et en réalité c'est véritablement le nombre d'objets utilisés, comme indiqué dans la documentation.
En fait je viens de me faire piéger, pour définir un objet temporaire je lui attribuais le numéro NUMBER_OBJECTS+1, or cet objet peut très bien avoir déjà été défini s'il y a des trous dans la numérotation, d'où collision.
Ma remarque est que je ne vois pas l'intérêt de ce NUMBER_OBJECTS (quand a-t'on besoin du nombre d'objets utilisés ???), alors qu'il aurait été beaucoup plus utile de connaître le numéro du DERNIER objet défini, pour pouvoir définir un nouvel objet sans risque. A ma connaissance, cette fonction n'existe pas. | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Sam 23 Oct 2010 - 22:43 | |
| Si, je me sert aussi de cette instruction, pour trouver l'objet cliqué. Ainsi au lieu de faire: - Code:
-
for a%= 1 to 10:if clicked(a%)=1 then instruction... next a%
J'ai une procédure fonte: dans mes programmes, j'envoie dans cette procédure et celle-ci par cette instruction, sait qu'elle est objet cliqué, et réagit en rapport.
C'est très mal expliqué vu que je ne vais mettre tout un programme en construction pour le démontrer, mais réfléchis, tu verras que cette instruction est utile.Je me suis trompé, j'ai confondu avec nomber_click |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 5:38 | |
| @JL35: Tu dis ça parce que tu es en colère de t'être fait piégé ?!... Le contenu de number_objects n'a pas vraiment beaucoup d'importance, qu'il y ai 23 ou 457 dedans cela change quoi du moment que lorsque tu l'utilises, tu mémorises cette valeur dans une variable. Cela donne l'occasion de fournir l'adresse de mon site dédié à Panoramic : http://nardo26.e-monsite.com (je l'ai rajouté dans mon profil, donc normalement, le bouton www doit rediriger vers celui-ci) Regarde mes sources, tu verras que cette variable, je l'emploi à tout bout de champs! (cela me permet d'obtenir un numéro d'objet unique et non utilisé) - Citation :
- pour définir un objet temporaire je lui attribuais le numéro NUMBER_OBJECTS+1, or cet objet peut très bien avoir déjà été défini s'il y a des trous dans la numérotation, d'où collision.
L'utilisation de number_objects pour déclarer un objet implique que TOUS les objets de ton prog doivent être déclaré par cette méthode...sinon tu risques la collision. Je sais c'est fastidieux mais au final c'est plus sympa (c'est mon avis) d'utiliser des noms de variable pour accéder aux objets que de manipuler des nombres. Si tu as besoin de déclarer des objets temporaires, tu peux très bien faire ceci: - Code:
-
Dim Obj_temp% ... ... ... toto: Obj_temp%=number_objects+1 File_open_read Obj_temp%,"monFichier.cfg" ... file_close Obj_temp% delete Obj_temp% return | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 9:04 | |
| Bravo Nardo pour ton nouveau site Il faut avoir du courage pour faire un site Félicitations. Dans certain programme il y a la commande Enum ou Enumeration Enumeration 2000 Fenetre_principale Bouton_Ok Bouton_Annul etc .... End Enumeration Ce qui en Panoramic donnerait: Fenetre_principale% = 2000 Bouton_Ok% = 2001 Bouton_Annul% = 2002 Form Fenetre_principale% width Fenetre_principale%,500 etc ... Ce qui pour moi est beaucoup plus parlant qu'un numéro ( Ceci est valable a mon avis pour les grands programmes) | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 10:42 | |
| Bof, pas vraiment du courage... le site lui-même est pour l'instant réduit à sa plus simple expression, C'est juste une boite dans laquelle je met mes fichiers. C'est plus sympa qu'une connexion ftp, non ? Il est vrai qu'il faut avoir du temps à consacrer pour mettre à jour les pages... La commande enum serait certainement utile sous panoramic ! et permettrait à JL35 par exemple d'avoir des 'trous' dans la numérotation des objets. Quoique je n'en vois pas beaucoup l'interet... Une autre façon de voir cette syntaxe dans "l'esprit" de pano qui n'a pas vraiment de notion de bloc d'instruction (en dehors des boucles) - Code:
-
enum 2000,Fenetre_principale,Bouton_OK,Bouton_Annul,etc... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 10:58 | |
| Salut Nardo, je vais aller voir ce fameux site un de ces jours, aujourdhui pas trop le temps (tu sais ce que c'est, la retraite, même à 60 ans...) Mais ton exemple de sous programme toto est exactement l'exemple de l'erreur que je faisais, de définir un nouvel objet (temporaire) par NUMBER_OBJECTS + 1 !! Ça suppose toujours qu'il n'y ait pas de trous dans la numérotation (ou ce qui revient au même que tous les objets soient définis depuis le début par number_objects + 1, bon, c'est faisable et je l'ai déjà fait, mais ça suppose de donner un nom de variable à TOUS les objets. Et s'il y en a beaucoup ça peut devenir lourd). C'est justement cette contrainte qui m'embête (tu remarqueras que je reste poli malgré ma colère ), j'aimerais bien connaître les numéros d'objets inutilisés donc libres. Ou, plus facile, le dernier numéro utilisé au moment donné. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 11:17 | |
| Oui cela deviens en peu lourd cette numérotation dès que l'on déclare beaucoup d'objets. cf. mon prog de log : j'ai 300 lignes de déclaration d'objets!... Peut être qu'en découpant le prog en plusieurs fichiers, cela le serait moins... Mais je ne vois pas d'autres moyens pour s'affranchir des numéros d'objets. Si on compare : - Code:
-
FORM 23 TOP 23,10 avec - Code:
-
DIM Form_toto%:Form_toto%=number_objects+1 FORM Form_toto% TOP Form_toto%,10 C'est sûr que la déclaration est plus longue à écrire mais on gagne en lisibilité du prog. Ce n'est pas forcement flagrant mais je l'ai déjà dis : question de maintenance c'est plus facile.... | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 11:58 | |
| Je suis très ennuyé de répondre, vu qu'il n'y a jamais eus de réponses à ma proposition, ce qui laisse entendre, que ça n'en vaut pas la peine. J'ai fais un programme qui permet de mettre des noms aux objets, en gardant la liste, il suffit de la reprendre pour rajouter ou incorporer d'autre nom. A t-on mal compris le programme? Je ne peux répondre vu qu'il n'y a pas de suite. - Code:
-
' programme nommant les objets
dim a$ ,c$ ,i% ,j% ,d$, r% dim t$(100)
width 0,1200:height 0,700 memo 1 :left 1,50:width 1,1130 :height 1,350:font_size 1,14:font_name 1,"Lucida Console" item_add 1," récupérer par copier/coller, les >>DIM<< suivants:":item_add 1,"" memo 2 :left 2,50:width 2,1130 :height 2,200:font_size 2,14:font_name 2,"Lucida Console":top 2,360 color 2,231,235,198
rem les noms des datas sont des exemples. Vous faitez votre propre liste. rem terminez la liste par $$$ rem " METTRE ICI LES NOMS CHOISIS " data cube,boite,camembert%,legume,chiendent,rose,plume,carotte,poireaux data voiture,bagnole,velo,carafe,soupe,verre, $$$
c$="" :a$="dim ":i%=1 repeat read c$:print c$ if c$<>"$$$" a$=a$+c$+"," : t$(i%)=c$:i%=i%+1 if len(a$)>70 then item_add 1,left$( a$ , len(a$) -1 ):a$="dim " end_if until c$="$$$"
item_add 1,left$( a$ , len(a$) -1 ) item_add 1,""
data "reportez les variables dans votre programmes, avant de vous en servir " data "pour définir vos objets. Si vous voulez incorporer d'autres " data "objets, il suffit de reprendre ce programme, d'y mettre les noms à la place qui vous" data " convient, et de remplacer l'ensemble des noms, " data "par ceux-ci. Ainsi votre propre programme est automatiquement régénéré."
read a$:read c$: item_add 1,a$+c$ read a$:read c$: item_add 1,a$+c$ read a$:item_add 1,a$
item_add 2,"rem variables définissant les objets (à recopier)":item_add 2,"" ' ******************************************************************* r%=0 :rem "variable donnant le dernier objet, pour mettre à la suite " ' * ' ******************************************************************* for j%=1 to i%-1 d$=d$+t$(j%)+"="+ str$(j%+r%) if len(d$)>70 item_add 2,d$:d$="" else d$=d$+" : " end_if next j% if d$<>"" then d$=trim$(d$):item_add 2,left$(d$,len(d$)-1) item_add 1,"":item_add 1,"pensez qu'un nom simple prend plus de place en mémoire qu'un nom avec % à la fin." item_add 1," ensuite on fait la liste avec par exemple:picture cube :edit boite .etc... En lignes 13 et 14, les noms des objets sont définis, ensuite en lançant le programme, on récupère les noms qui serviront de numéro d'objet. Je crois que j'abuse. Modifié, j'ai trouvé une erreur
Dernière édition par cosmos70 le Dim 24 Oct 2010 - 13:02, édité 1 fois |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 12:31 | |
| Heu...J'ai pas bien pigé comment on doit utiliser ton programme... tu peux m'expliquer avec un petit exemple? Bon je sais que c'est l'heure de l'apéro et je ne voudrais pas abuser... On doit taper les noms des variables dans ton prog et il nous génère les dim et la création des variables contenant les numeros c'est ça ? | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 13:00 | |
| Je veux faire un programme: picture image edit ecriture alpha jet memo rentum list ing combo bo_con :' excuse moi pour se semblant d'humour! donc je vais modifier les lignes: 16 et 17 (j'ai rajouté dans le programme un memo de récupération qui change les lignes dans les explications données plus haut) data image,ecriture,jet,rentum,ing,bo_con ce qui donne: - Code:
-
' programme nommant les objets
dim a$ ,c$ ,i% ,j% ,d$, r% dim t$(100)
width 0,1200:height 0,700 memo 1 :left 1,50:width 1,1130 :height 1,350:font_size 1,14:font_name 1,"Lucida Console" item_add 1," récupérer par copier/coller, les >>DIM<< suivants:":item_add 1,"" memo 2 :left 2,50:width 2,1130 :height 2,200:font_size 2,14:font_name 2,"Lucida Console":top 2,360 color 2,231,235,198
rem les noms des datas sont des exemples. Vous faitez votre propre liste. rem terminez la liste par $$$ rem " METTRE ICI LES NOMS CHOISIS " data image,ecriture,jet,rentum,ing,bo_con data $$$
c$="" :a$="dim ":i%=1 repeat read c$:print c$ if c$<>"$$$" a$=a$+c$+"," : t$(i%)=c$:i%=i%+1 if len(a$)>70 then item_add 1,left$( a$ , len(a$) -1 ):a$="dim " end_if until c$="$$$"
item_add 1,left$( a$ , len(a$) -1 ) item_add 1,""
data "reportez les variables dans votre programmes, avant de vous en servir " data "pour définir vos objets. Si vous voulez incorporer d'autres " data "objets, il suffit de reprendre ce programme, d'y mettre les noms à la place qui vous" data " convient, et de remplacer l'ensemble des noms, " data "par ceux-ci. Ainsi votre propre programme est automatiquement régénéré."
read a$:read c$: item_add 1,a$+c$ read a$:read c$: item_add 1,a$+c$ read a$:item_add 1,a$
item_add 2,"rem variables définissant les objets (à recopier)":item_add 2,"" ' ******************************************************************* r%=0 :rem "variable donnant le dernier objet, pour mettre à la suite " ' * ' ******************************************************************* for j%=1 to i%-1 d$=d$+t$(j%)+"="+ str$(j%+r%) if len(d$)>70 item_add 2,d$:d$="" else d$=d$+" : " end_if next j% if d$<>"" then d$=trim$(d$):item_add 2,left$(d$,len(d$)-1) item_add 1,"":item_add 1,"pensez qu'un nom simple prend plus de place en mémoire qu'un nom avec % à la fin." item_add 1," ensuite on fait la liste avec par exemple:picture cube :edit boite .etc... et le résultat donne les lignes suivantes: - Citation :
- rem variables définissant les objets (à recopier)
image=1 : ecriture=2 : jet=3 : rentum=4 : ing=5 : bo_con=6 il suffit de laisser le programme de côté, pour à l'occasion insérer d'autre nom, ou changer l'ordre. De copier les lignes dans le programme à faire, par copier/coller, ainsi que la ligne DIM en haut. Il est évident que cela vaut pour un long programme, si il n'y a que 2/3 objets, je n'en vois pas l'intérêt. Pour revoir la liste, donc on reprend le programme, on modifie les datas par rapport à ses besoins, et en remplace la ligne DIM, et les lignes OBJETS définies. Pour les gros programmes, on programme avec des noms, sans tenir compte des N°, et si on veut insérer un objet, avec le programme en mémoire, tout est redistribué. Bon Appétit! |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 13:41 | |
| ok je comprend. merci ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 15:49 | |
| Le programme de cosmos m'a donné une idée : c'est encore une ébauche: - cliquer sur "Load" : choisissez un fichier panoramic - cliquer sur 'Scan' --> dans le mémo apparait les objets déclarés (numero, type, ligne du programme) Ce qu'il reste à ajouter : - compléter les datas des mots cles (peut être envisager un fichier texte contenant tous les mots clés de déclaration d'objet) - Avoir un timer qui vient scruter toutes les x secondes la date du fichier bas et en cas de changement, recharger et refaire un scan automatiquement Votre avis ?... STOOOP y a un bug... je corrige et je vous dis quand... QUAND !!! (c'est corrigé !) - Code:
-
DIM Border_size%,Title_size%,w%,h% picture 1:full_space 1:Title_size%=height(0)-height(1):Border_size% = width(0)-width(1): delete 1 DIM bScan%: bScan%= number_objects+1:button bScan%:inactive bScan% DIM bLoadFile%:bLoadFile%=number_objects+1: button bLoadFile% DIM lstObject%:lstObject%=number_objects+1: LIST lstObject%: ' BAR_BOTH lstObject% LABEL LoadFile,Scan,Redraw
WIDTH lstObject%,WIDTH(0)-Border_size% HEIGHT lstObject%,HEIGHT(0)-Title_size%-TOP(lstObject%)-height(bScan%) LEFT bScan%,5:TOP bScan%,TOP(lstObject%)+HEIGHT(lstObject%) : caption bScan%,"Scan" TOP bLoadFile%,top(bScan%): LEFT bLoadFile%,left(bScan%)+WIDTH(bScan%)+5:caption bLoadFile%,"Load"
DIM dLstPrg%:dLstPrg%=number_objects+1:DLIST dLstPrg% DIM tRedraw%:tRedraw%=number_objects+1:timer tRedraw% timer_off tRedraw%:timer_interval tRedraw%,100:on_timer tRedraw%,Redraw
DIM tObject$(30),nbMotsCles%,nbFind% DIM tmpObject%,tmpObject2%,fichier$,i%,j%,k%,l%,ligne$,a$ FONT_NAME lstObject%,"Courier New" FONT_SIZE lstObject%,10 for nbMotsCles%=0 to 30 read tObject$(nbMotsCles%) if tObject$(nbMotsCles%)="####" then nbMotsCles%=nbMotsCles%-1:exit_for next nbMotsCles%
on_click bScan%,Scan on_click bLoadFile%,LoadFile timer_on tRedraw%
END
LoadFile: tmpObject%=number_objects+1 OPEN_DIALOG tmpObject% fichier$=FILE_NAME$(tmpObject%) if fichier$<>"_" clear dLstPrg%:nbFind%=0 FILE_LOAD dLstPrg%,fichier$ caption 0,fichier$+" nb ligne:"+str$(count(dLstPrg%)) active bScan% else inactive bScan% end_if return
Scan: for i%=1 to count(dLstPrg%) ligne$="" ligne$=UPPER$(item_read$(dLstPrg%,i%)) ' maintenant on vire toutes les chaines de caractères if instr(ligne$,chr$(34))<> 0 or instr(ligne$,chr$(39))<> 0 k%=1:a$="" for j%=1 to len(ligne$) if mid$(ligne$,j%,1)=chr$(39) then exit_for if mid$(ligne$,j%,1)=chr$(34) a$=a$+mid$(ligne$,j%,1) k%=bin_xor(k%,1) else if k%=1 then a$=a$+mid$(ligne$,j%,1) end_if next j% ligne$=a$ end_if ' puis on vérifie si pas de mot-cles de declaration d'objets... for j%=0 to nbMotsCles% k%=INSTR(ligne$,tObject$(j%)) if k%>1 if mid$(ligne$,k%-1,1)="_" then k%=0 end_if ' on en a trouvé un: if k%<>0 nbFind%=nbFind%+1 a$="":k%=k%+len(tObject$(j%)) while mid$(ligne$,k%,1)<>":" a$=a$+mid$(ligne$,k%,1) k%=k%+1 if k%> len(ligne$) then exit_while end_while a$="numéro: "+a$+" type:"+tObject$(j%)+" déclaration ligne:"+str$(i%)
item_add lstObject%,a$ caption 0,fichier$+" nb ligne:"+str$(count(dLstPrg%))+" nb objets:"+str$(nbFind%) end_if next j% next i% item_add lstObject%," Fini !" return
Redraw: if w%<>width(0) or h%<>height(0) WIDTH lstObject%,WIDTH(0)-Border_size% HEIGHT lstObject%,HEIGHT(0)-Title_size%-TOP(lstObject%)-height(bScan%) LEFT bScan%,5:TOP bScan%,TOP(lstObject%)+HEIGHT(lstObject%) : caption bScan%,"Scan" TOP bLoadFile%,top(bScan%): LEFT bLoadFile%,left(bScan%)+WIDTH(bScan%)+5:caption bLoadFile%,"Load" w%=width(0):h%=height(0) end_if return
DATA "FORM ","BUTTON ","DLIST ","LIST ","EDIT ","MEMO ","OPEN_DIALOG ","TIMER ","PICTURE ","ALPHA " DATA "COMBO ","MOVIE ","GRID ","OPTION ","SCENE2D ","SCENE3D","SCROLL_BAR ","SOUND ","SPIN ","SPRITE " DATA "####"
| |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 17:35 | |
| Je viens juste de faire un détour sur ton site, pour voir. Chapeau. Quand au programme, ce sera pour plus tard. Parfois, je regarde 2 mois plus tard, je n'aime pas me disperser dans les idées lorsque je bloque sur un programme. Salutation |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 19:10 | |
| @Nardo26: Bravo pour ton site! J'ai fait une rubrique spéciale sur le forum et sous peu, je ferais un renvoi sur le site de PANORAMIC. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 20:13 | |
| Merci beaucoup, En fait après avoir batailler avec des serveurs ftp, j'ai trouvé que c'était plus simple et plus convivial d'avoir un site qui regroupe tout sans encombrer le forum...
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 22:47 | |
| Bon, revenons à nos moutons Nardo, on n'est pas là pour se congratuler sur ton site ! si beau soit-il ! Intéressant ton programme qui analyse un source Panoramic, ça pourrait être le début d'un outil plus général d'analyse de source qui listerait également les étiquettes et leurs adresses, les sous-programmes, plus dur les variables, qui ferait sur demande une indentation automatique, qui passerait tous les mots-clé en majuscules, etc. Remarques sur le programme: - tu aurais pu formater le résultat avec des blancs pour aligner les données - tu as oublié au moins l'objet CHECK ! (comme par hasard j'en avais plein dans le source soumis) | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 23:11 | |
| Oui tu as raison, cela pourrait être l'embryon d'un outil beaucoup plus généraliste... Le problème du formatage, c'est que le caractère de tabulation ne marche pas dans une liste. Je pourrai compléter avec des espaces... Là où je coince un peu c'est lorsque l'on a un code de ce genre : - Code:
-
for i%=2 to 4 ALPHA i% next i% ou - Code:
-
EDIT Nom2Edit%
mais je pense que ce n'est pas insurmontable... Sinon : rajout de CHECK, CONTAINER Ce que je regrette c'est de ne pas voir de send_message de manière à pouvoir forcer l'editeur de pano à aller sur la ligne que l'on a sélectionné dans la liste... ça, ça serait vraiment cool !
Dernière édition par Nardo26 le Dim 24 Oct 2010 - 23:37, édité 2 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 23:29 | |
| C'est bien à des espaces que je pensais pour le formatage.
Pour une définition multiple d'objets avec une variable dans une boucle je ne pense pas que tu puisses faire mieux que le donner une seule fois.
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Dim 24 Oct 2010 - 23:41 | |
| Mise à jour : - formatage du résultat je gamberge pour détecter dans le cas de : MOT_CLES Variable% si je ne trouve pas d'affectation de Variable% dans les lignes anterieures... | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 0:03 | |
| J'avais déjà commencé à lire les variables pour pouvoir renommer dans une liste celle-ci ainsi que les labels, mais ne pouvant pas courir plusieurs chevaux à la fois, je laisse de côté celà pour avancer dans mon autre programme. Il y a une partie qui lit les dim. A toi de voir, la partie qui lit les dim fonctionne, le reste c'est à voir, et de toute façon tu choisiras une autre méthode, avec d'autres idées. Si entre temps, vous avez le temps de faire un programme qui permette de lister toutes les variables du programme ainsi que les labels, pour les changer dans tout le programme, j'en serais le plus heureux. Pour moi, une chose à la fois. Il faudra mettre le lien d'un fichier bas pour sortir les variables, mais ça vous l'avez compris. - Code:
-
dim a%,b%,c%,a$,b$ ,q ,include% ,flag_include% ,c$ ,v% ,d% ,e% ,labele$,d$ ,lef$, l% , choix_item% label sortTronCommentaire , decale , corrige ,copie ' je prends le programme REMARQUE/ IL FAUDRAIT LIRE LE FICHIER JUSQU'AU END POUR DERNIER OBJET ET LIRE VARIABLE width 0,500:height 0,900:left 0,600
dlist 1 dlist 2 :file_load 2,"C:\TESTE\boucles-label.bas"
dlist 3:' width 3,100:height 3,100:font_size 3,12 :color 3,198,243,148 dlist 4:' width 4,70 :height 4,100:font_size 4,12: left 4,105 :color 4,239,215,140
list 6:width 6,100:height 6,150:font_size 6,12:left 6,100 :color 6,198,243,148:on_click 6,copie list 7:width 7,70 :height 7,150:font_size 7,12:left 7,05 :color 7,239,215,140 scroll_bar 8:left 8,220:height 8,10:width 8,150:vertical 8 edit 9:left 9,400:font_size 9,12:width 9,50 edit 10:left 10,005:width 10,200:top 10,122:font_size 10,12:on_change 10,corrige
' list 100:top 100,500 ' je mets le label de la procédure, et les dims de départ for a%=1 to count(2) a$=item_read$(2,a%) if instr(upper$(a$),"END")>0 and instr(upper$(a$),"END_")=0 then b%=1:' item_add 1,"gosub liste_variable"
item_add 1,a$
next a% ' maintenant il faudrait rechercher tous les DIM et les définir de suite, et mettre les autres en commentaires. ' la ligne 1 ne compte pas, elle vient d'être rajouté pour ce programme d$="DIM " for a%=1 to count(1) c$="" a$=trim$(item_read$(1,a%)) b%=instr(a$,":") c%=instr(a$,lower$("dim")) if c%>0 IF instr(a$,"' ")>0 or instr(upper$(a$),"REM ")>0 if instr(a$,"' ")<b% or instr(upper$(a$),"REM ")<b% ' ici commentaire goto sortTronCommentaire end_if end_if
lef$=left$(a$,c%-1) b$=mid$(a$,c%+4,100) if instr(b$,":")>0 c$=right$(b$,len(b$)- instr(b$,":")) b$=left$(b$,instr(b$,":")-1) end_if if b%<c% a$=insert$(a$,"' ",b%+1) else a$=insert$(a$,"' ",1) end_if a$=lef$+c$+":' dim "+b$ item_delete 1,a% item_insert 1,a%,a$ if len(d$)>4 d$=d$+","+b$ else d$=d$+b$ end_if end_if sortTronCommentaire: next a% a$=d$ item_insert 1,2,d$
' ------------------------------------
' ici mise en liste de chaque variable a$=mid$(a$,4,500) repeat b%=instr(a$,",") if b%>0 b$=trim$(left$(a$,b%-1)) item_add 3,b$:item_add 4,"" a$=trim$(right$(a$,len(a$)-b%)) else b$=a$ end_if until b%=0
' je viens de composer le programme ' /////////////////////////////////////// ' ----------------------ici on met en list les DIM ----------------------------- ' j'y mets les DIM en liste rem " recherche des DIM for a%=1 to count(1) a$=trim$(item_read$(1,a%)) if trim$(a$)="q:" then exit_for if upper$(left$(trim$(a$),4))="DIM " a$=trim$(right$(a$,len(a$)-4)) b%=instr(a$,":") if b%>0 then a$=trim$(left$(a$,b%-1)) b$=a$ end_if next a% sort 3 for a%=1 to 6:item_add 7,item_read$(3,a%):item_add 6,item_read$(3,a%):next a% if count(6)>count(7) then item_delete 6,count(6)
if count(3)>0 then max 8,count(3):min 8,1 l%=1: max 8,count(3) on_change 8,decale end ' ==================================================================
decale: gosub copie for a%=1 to count(6) item_delete 4,a%+l%-1:item_insert 4,a%+l%-1,item_read$(6,a%) next a% l%=position(8) if l%>0 clear 7:clear 6:text 9,l% for a%=l% to l%+5 if a%<=count(3) a$=item_read$(3,a%):item_add 7,a$ item_add 6,item_read$(4,a%) end_if next a% if count(6)>count(7) then item_delete 6,count(6) end_if ' choix_item%=0 text 10,"" return ' =============================================================== corrige: return ' ============================================================== copie: if choix_item%>0 item_delete 6,choix_item%: item_insert 6,choix_item%,text$(10) end_if if number_click=6 text 10, item_index$(6) choix_item%=item_index(6) end_if return |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 0:18 | |
| merci cosmos ! j'y jetterai un coup d'oeil : Pour l'instant j'essaye d'identifier l'affectation des variables utilisées lors de la déclaration des objets... c'est Ok pour les objets déclarés de la manière suivante : Variable%=456 .. .. MOT_CLE Variable% | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 11:07 | |
| Eh ben bon courage ! parce que bonjour tous les cas particuliers... variable% = v2%+5, variable% = toto%+tata%-3 etc etc... Tiens, si je me lançais dans la compétition avec le cahier des charges minimum: - liste des variables - numéros des lignes où sont utilisées ces variables - liste des étiquettes - numéros des lignes où sont appelées ces étiquettes - liste des objets - numéros des lignes où sont référencés ces objets etc etc | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 11:41 | |
| J'aimerai être dans la compétition, mais j'en ai pas le temps. Trop pris pour autre chose. Ce que je voulais faire particulièrement est ceci. Régulièrement on fait un programme, avec des noms de variable simple, comme a%, a$, b$ et des labels voir, copie, etc. Et ces programmes ont voudrait les intégrer comme include une fois finis, et alors là, tout est à renommer pour y mettre des noms compliqués qui ne perturberont pas les autres programmes. J'avais commencé, mais il y a plus important pour moi, et je laisse donc de côté cette idée. Ce sera pour plus tard. A moins que le même désir vous concerne, et voulez le faire aussi. Dans ce cas, bonne chance. Pour les labels, je l'ai déjà fait dans un autre programme, et si vous le voulez, je peux le rechercher et mettre la méthode. Je me rappelle que la partie codée tenait compte de savoir si il y avait d'autres commandes dans la même ligne, ou que cela était intégrante d'un rem ou de'une chaine. Quoi que vous décidez, au travail, tas de fainéants. |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 11:50 | |
| Pour le cas où il y aurait des doutes, la dernière phrase est une plaisanterie. On ne sait jamais. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Lun 25 Oct 2010 - 11:57 | |
| Non, non, je sens bien que tu parlais sérieusement cosmos, bon, on y va, mais n'insiste pas trop sinon on se met en grève !
Sinon, les Include c'est bien, mais pour moi (comme pour tous apparemment) c'est le problème des variables qui doivent être déclarées dans le programme principal pour ne pas entrer en conflit avec d'autres déjà déclarées. A ce jour je n'ai pas trouvé la solution géniale, ou alors il faut donner des noms de variables spécifiques avec des noms longs à coucher dehors, je n'aime pas. Moi j'aime bien les a$, b$, i%, j%, x et y (vieilles séquelles du basic). Ça m'est plus facile à lire que nom_de_la_patronne$ ou résultat_du_calcul%.
Vivement les Include avec variables locales, c'est un voeu pieux (ne pas confondre svp avec un vieux pieu). | |
| | | Contenu sponsorisé
| Sujet: Re: Nombre d'objets | |
| |
| | | | Nombre d'objets | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |