| Une commande pour aller à la ligne xxx | |
|
|
|
Auteur | Message |
---|
Invité Invité
| Sujet: Une commande pour aller à la ligne xxx Mar 22 Juin 2010 - 22:25 | |
| Bonjour, J'aimerais bien pouvoir avoir une commande dans les menus pour se rendre directement à la ligne xxx. Parce que moi dans mes long programme de 2000 lignes je trouve cela long de monter et baisser l'ascenseur. Merci! |
|
| |
jjn4
Nombre de messages : 2691 Date d'inscription : 13/09/2009
| |
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 0:53 | |
| Peut-être des programmes plus courts ? | |
|
| |
Klaus
Nombre de messages : 12277 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 1:12 | |
| Peut-être Jack pourrait-il rajouter un champ "Numéro de ligne" dans la boite de dialogue "Recherche" et on se pointerait directement sur cette ligne ? | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 3:14 | |
| Moi aussi il y a longtemps que j'aimerai cette fonction, même avec une liste des procédure d'appels et aller directement à la procédure cliquée. Mais comme la tache de Jack n'est pas facile!
JL35, le programme que j'ai en tête, je pourrai le penser de n'importe qu'elle façon, c'est pas avec 2000 lignes qu'il marchera. Déjà je me sers du presse-papier pour en alléger une partie. |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 14:45 | |
| Eh bien, je t'admire si tu arrives à mettre au point et gérer un programme de 10000 lignes..., avec la moindre modif qui risque de tout mettre en l'air. J'espère que tu fais ça sous forme de modules, avec des sous-programmes, sinon ça devient vite ingérable (du moins pour moi). Surtout si tu t'y replonges plusieurs mois après pour une mise à jour quelconque.
Cela dit ce serait sans doute intéressant de pouvoir se positionner dans l'éditeur à un endroit donné du programme, je dirais plutôt sur une étiquette (par exemple un sous-programme) que sur un numéro de ligne. | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 15:39 | |
| J'ai déjà fais un programme de plus de 22000 lignes. A la fin revenir sur ce qui avait était fait un an avant n'était pas évident, mais maintenant j'ai l'expérience et je sais comment gérer. C'est pour cela que dans mes feuilles ou dans mes boites d'appel, j'y adjoins un bouton qui me permet d'avoir un mémo dans lequel j'y mets la procédure qui a appelé, la raison, le but, et les améliorations à faire. Chaque feuille ou chaque boite à son fichier adjoint.
Et puis il est bon d'avoir un cahier avec des onglets pour chaque procédure avec l'idée qui a conduit à la création de celle-ci. Peut-être même puisse que je l'ai fais, est d'adjoindre mon mémo à onglet. Il y a des petits problèmes, mais minime, et comme il fonctionne!
Mais pour l'instant j'ai pas tout à fait fini les testes pour commencer, j'ai a peu près tout résolu les blocages pour démarrer. @+ |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 15:46 | |
| C'est admirable si tu arrives à tenir ta documentation à jour, et sur papier qui plus est, en ce qui me concerne j'essaie de mettre le plus de commentaires possibles dans le code, mais malgré ça parfois on a une idée qu'on ne veut pas laisser filer, alors on code en vitesse, et des mois après va retrouver la logique du moment ! sans parler quand il faut se plonger dans les programmes des autres qui étaient tout aussi pressés de coder, j'en sais quelque chose. | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 16:03 | |
| La logique du papier est plus importante que tu crois. Adjoindre un listing d'un sous programme à jour te donne une meilleure lisibilité. Pour ce qui est des commentaires dans le code ça ne suffit pas. J'avais il me semble plus de 300 boites qui étaient des menus multiples, et à la fin pour une boite je ne savais plus où retrouver l'appel de celui-ci, et du pourquoi. C'est pour cela avoir un doc pour chaque boite ou chaque feuille dans les grands programmes, est important.
Pour en revenir à la demande d'aller à telle ligne, en GFA basic, dans la version deux, toutes les procédures ou sub si tu préfaire, avait cette particularité de se replier, ce qui permettait de ne voir que le nom de la procédure, et ça c'est du grand confort!
Au peu pas tout demander à Jack, je trouve qu'il avance vite par rapport au temps qu'il a pour le faire, d'autant qu'il est multi-tache dans son travail. Mais peut-être qu'il trouvera un jour le temps de rajouter une des fonctions de ce poste. |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 16:40 | |
| Je n'ai pas dit que la documentation papier n'était pas importante, bien au contraire ! c'est même indispensable si on travaille à plusieurs sur un projet. Je disais seulement qu'il faut se forcer pour le faire, c'est obligé quand on travaille en équipe, mais quand on est tout seul c'est beaucoup plus difficile de se l'imposer. | |
|
| |
Klaus
Nombre de messages : 12277 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 18:25 | |
| Juste une remarque (évidente): pour se placer sur un sous-programme donné, on peut déjà le faire actuellement: dans la boite de recherche, on donne le label du sous-programme avec son ":", et on y est. Exemple: rechercher valider_fiche: pour chercher le début du sous-programme valider_fiche. | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 20:09 | |
| J'y ai bien pensé, le problème est que si on a un tas de procédure, il faut se souvenir du nom, et de son orthographe (surtout si on met des noms à rallonge pour des includes). Ce serait bien d'avoir un combo avec le nom des sous programmes. Marrant, j'ai pas de retour sur cette idée. |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 20:26 | |
| Pas de retour, peut-être, mais c'est quand même une idée intéressante. | |
|
| |
Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 20:49 | |
| Une commande dans un menu pour aller directement à une ligne est une idée intéressante. | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 21:00 | |
| Perso je verrais plutôt par exemple une commande du menu qui listerait toutes les étiquettes du programme (c'est l'idée de cosmos je pense), avec un clic sur une étiquette qui afficherait à partir du label correspondant (ou clic abandon). Parce que le renvoi vers un numéro de ligne... comment savoir qu'il faut aller à la ligne 7857 qui ne correspond plus à rien si on a fait des modifs avant( ajouts ou suppressions), et puis un numéro de ligne ça ne parle pas beaucoup, contrairement à un label, dont l'emplacement serait automatiquement à jour, même après modifications. | |
|
| |
Jack Admin
Nombre de messages : 2386 Date d'inscription : 28/05/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 21:21 | |
| - Citation :
- Perso je verrais plutôt par exemple une commande du menu qui listerait toutes les étiquettes du programme
Je comprends bien la demande, mais ça veut dire que l'éditeur n'est plus vraiment un éditeur mais doit comprendre ce que fait le source: il doit l'analyser un minimum pour y trouver les déclarations de LABEL (qui peuvent se situer n'importe où dans le source), puis les numéros des lignes où sont implémentés ces labels. Par "comprendre", je veux dire, doit pouvoir faire la différence entre: - Code:
-
label vrai_label et - Code:
-
print " : label faux_label : " ou encore - Code:
-
dim a$ : a$ = " : label faux_label : " : print a$ Et là, c'est autrement plus compliqué à coder qu'une commande dans le menu qui va à un numéro de ligne. Je pense qu'il y a plus urgent à faire et plus utile que de faire rechercher les vrais labels par l'éditeur. | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 22:00 | |
| Merci pour ta réponse. C'était pour cela que je n'avais jamais ouvert le sujet.
Une question: une simple recherche de ligne avec un nom entier terminé par deux points, ne serait-il pas suffisant? Peu importe. J'ai parlé d'un outil de réparation, et je viens de voir que généralement lorsqu'un éditeur est bloqué, en le réduisant, on ouvre un nouveau éditeur, et lorsqu'il est bloqué lui aussi, j'ai remarqué que bien souvent le premier se débloqué. J'ai remarqué que lorsque l'éditeur est bloqué, également en créant un nouvel onglet, on le débloque. Peut-être y a t-il moyen de faire quelque chose. Si ça ne résout pas tous les problèmes de blocage, peut-être majoritairement, cela est réparable. @+ |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 22:01 | |
| Effectivement, tout bien réfléchi, c'est bien plus compliqué à faire qu'à dire... @cosmos, la recherche d'un nom avec ':' ne suffit pas, il faut tenir compte de tous les cas particuliers, les REM, les "'" etc... | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 22:10 | |
| JL35, tu n'as pas assez réfléchi. un rem qui fonctionne comme un apostrophe avec deux points, n'est pas un mot entier. Il y a forcément un espace entre, et je crois qu'il est facile d'exclure ces cas. Cela dit si dans la liste, il y a n ou deux noms pas valide, est-ce grave?. Quand tu gères des milliers de lignes, crois moi, c'est pas le principal, et cela permet peut-être de trouver une erreur.
|
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 22:56 | |
| Mais si j'ai réfléchi, pour avoir fait l'essai, j'ai une ligne comme celle-ci: 2D_CLEAR: 2D_FILL_COLOR 255,255,255: etc... qu'est-ce qui me dit que 2D_CLEAR n'est pas une étiquette ? Tiens, pour la peine un petit programme pour toi, qui recherche les étiquettes et leur emplacement (j'ai peut-être sauté quelques cas très particuliers): - Code:
-
' Recherche de l'emplacement des étiquettes dans un programme source DIM Etiq$(500), Ligne(500), f$, a$, nl, ne, i, k LABEL rr f$ = "C:\Langages\Panoramic\PhotA4.bas": ' Source à examiner
' Recherche des labels déclarés FILE_OPEN_READ 1, f$: nl = 0: ne = 0 WHILE FILE_EOF(1) <> 1 FILE_READLN 1, a$: a$ = TRIM$(a$) IF LEFT$(UPPER$(a$), 6) = "LABEL " a$ = LTRIM$(MID$(a$, 7, LEN(a$)-6)) k = INSTR(a$, ":"): IF k >0 THEN a$ = LEFT$(a$, k-1) rr: k = INSTR(a$, ",") IF k>0 ne = ne + 1: Etiq$(ne) = TRIM$(LEFT$(a$, k-1)) a$ = LTRIM$(MID$(a$, k+1, LEN(a$)-k)) GOTO rr ELSE ne = ne + 1: Etiq$(ne) = TRIM$(a$) END_IF END_IF END_WHILE FILE_CLOSE 1
' Recherche de ces labels dans le code FILE_OPEN_READ 1, f$ WHILE FILE_EOF(1) <> 1 nl = nl + 1: FILE_READLN 1, a$: a$ = TRIM$(a$) IF LEFT$(a$, 1) <> "'" k = INSTR(a$, ":") IF k>0 IF INSTR(Left$(a$, k-1), " ") = 0 FOR i = 1 TO ne IF UPPER$(Etiq$(i)) = UPPER$(LEFT$(a$, k-1)) THEN Ligne(i) = nl: EXIT_FOR NEXT i END_IF END_IF END_IF END_WHILE FILE_CLOSE 1
' Tri du résultat FOR k = 1 TO ne-1 FOR i = k+1 TO ne IF Ligne(i)<Ligne(k) nl = Ligne(k): Ligne(k) = Ligne(i): Ligne(i) = nl a$ = Etiq$(k): Etiq$(k) = Etiq$(i): Etiq$(i) = a$ END_IF NEXT i NEXT k FOR k = 1 TO ne: PRINT STR$(Ligne(k)) + ": " + Etiq$(k): NEXT k END La méthode de tri de la fin n'est pas ce qui se fait de plus performant (tri par bulles), mais s'il n'y a pas trop d'éléments ça va. | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 23:19 | |
| Je ne vais perdre trop de temps la dessus, c'est une simple remarque d'autant que Jack ne le feras pas. Une étiquette c'est quoi? C'est un mot entier sans espace terminé par deux point, et rien d'autre ensuite. Si tu essayes de mettre n'importe quoi après les 2 points, il y a erreur. Donc en basic : tu prends trim$(la ligne) puis right$(la ligne,1)=":", tu peux aussi contrôler si il y un espace et aussi 2 point dans le mot. Si tout les critères sont bons, cela doit-être une étiquette, et moi je n'irais pas plus loin. Si tu veux forcer en plus, tu regardes instr(les label, le mot à contrôler)=1, si c'est 1 c'est une étiquette. Si c'est une étiquette tu la rajoute dans la liste. Le plus dure sera ensuite de sauter à l'étiquette (en tout cas dans un memo c'est pas simple, pour replacer la ligne au bonne endroit)
J'ai envie de dire piger?, mais c'est trop présomptueux, surtout si tu trouves une exception.
Bonne nuit tout de même |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Mer 23 Juin 2010 - 23:39 | |
| J'allais me coucher et au dernier moment, je me suis dis: pourquoi chercher tout les labels dans une liste? Il suffit de la mettre soi même. Généralement on ne s'occupe de quelques uns. Ceux dont le codage est fini, ne nous intéressant plus, ne présentent pas d'intérêt. Donc si un label est retenu, on le rajoute dans la liste. Là Jack n'a pas à ce préoccuper si c'est un label ou non. Le plus dur sera le placement de la ligne, et maintenant je pense cela possible. Ce n'est qu'une question de priorité.
En parlant de label, il y a un manque, c'est celui de la coloration de ceux-ci pour les retrouver.
Dodo! |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Jeu 24 Juin 2010 - 8:05 | |
| Je suis en train de me relire et j'ai l'impression d'avoir été vache. C'était pas mon intention, mais c'était ma façon de répondre rapidement pour faire autre chose.
Si vous pensez que je prends un air supérieur, je m'en excuse, c'est absolument pas le cas. Je traite seulement rapidement les problèmes et j'ai du respect pour ceux qui interviennent.
Désolé JL35 |
|
| |
Yannick
Nombre de messages : 8610 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Une commande pour aller à la ligne xxx Jeu 24 Juin 2010 - 12:28 | |
| je suis JL35 on peut imaginé un click sur le nom de la fonction qui renvoit à l'endroit de son appel... | |
|
| |
Invité Invité
| Sujet: Re: Une commande pour aller à la ligne xxx Jeu 24 Juin 2010 - 12:56 | |
| En regardant la réponse de ygeronimi, je me suis rendu compte que le programme qui m'était destiné, je ne l'avais pas essayé (j'étais dans l'urgence de faire autre chose pour limité ma présence / et en réalité j'ai rien fait d'autre hier soir).
Je n'avais regardé que "2d_clear..." et répondu à cela.
Je viens d'essayer ce programme, et la seule chose qui s'affiche est "0:" Je ne comprend pas. @+ |
|
| |
| Une commande pour aller à la ligne xxx | |
|