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 |
|
|
| Demande fonction KGF pour inclure une série dans une liste. | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 16:46 | |
| Bonjour, Avant propos: Je suis depuis quelques jours sur un programme pour imprimer des sources Panoramic. Ce qui existe ne me convient pas. Soit il faut imprimer toutes les page, soit lorsque les lignes sont trop longues, on a la suite dans une nouvelle ligne qui n'est pas indentée avec la précédente, et aussi on a selon les éditeurs, un n° de ligne supplémentaire, soit si on copie une partie de code, les n° de lignes ne sont pas corrects. Enfin, il y a plein de chose qui ne va pas. Comme j'ai un programme qui commence à trainer en temps, et que j'ai constamment des reprises, ou des versions différentes, je passe plus de temps à m'y retrouver et pour cette raison, je m'attaque ce problème. Voilà où j'en suis: Image ici dans la représentation. J'ai les N° de lignes qui conviennent, j'ai une indentation automatique des lignes, en ne s'occupant pas de celui du source, j'ai un repère des indentations de couleurs différentes pour chacune, afin de se retrouver sur différentes pages, et des retours à la ligne qui sont bien repérés, indentés, et sans impact sur la numérotation. J'en suis maintenant au repérage des mots clés, entre autre. Pour se faire j'utilise KGF avec les masques sur les chaines de caractères. Je me dis que pour faire travailler le moins possible celle-ci pour retrouver les portions de chaine, ce serait bien d'avoir une fonction qui me mette directement soit dans un dlist, soit dans un tableau, les numéros de position de chaque "*", ce qui aura pour effet d'améliorer le temps de récupération des infos, et de de diminuer le travail du processeur. Du moins c'est ce que je pense. Maintenant que je vois le résultat, je me suis aperçu que l'indentation automatique, permettait une recherche plus facile de toutes les boucles, et le programme que j'avais fait en ce sens, se retrouve actualisé, avec les amélioration. Il suffira de rajouter une sub, pour n'avoir que cette fonction, et du coup je fais d'une pierre deux coups. Qu'en penses-tu? Je ne sais plus si tu peux remplir un dlist ou un tableau. J'ai pas de temps pour analyser les possibilités de KGF. Çà change tout le temps. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 17:53 | |
| Belle capture, Cosmos70 ! Cela devient vraiment prometteur. Et je serais content de pouvoir fournir une fonction qui de faciliterait la programmation.
Expique-moi, le mieux serait à l'aide d'un exemple, ce que tu souhaites faire, car je ne vois pas bien ce que les "*" font là. Peux-tu poster un exemple avec les données en entrée de la fonction et le résultat que tu souhaites obtenir . Car oui, je peux remplire une DLIST. | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 18:40 | |
| Voilà: Je mets tout ton exemple, car il y a des erreurs dedans dim a$, separ$, mask_separ$, mask_text$, mask_quote$, mask_out$, res%
msk_separ$ = "*" : mask_text$ = "=" : mask_quote := "{}" mask_separ$ mask_quote$ separe$ = " ,:<>='/*+-"
a$ = " For a% = 1 to 10:print " + g$ + "fort de toute expérience" + g$ + ": next a%:if a%>=10 then a%=10: ' fin de la ligne"
mask_out$ = string$(len(a$)," ")
res% = dll_call6("GenerateMask",adr(a$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote),adr(mask_out$))
' résultat:
' For a% = 1 to 10:print "fort de toute expérience": next a%:if a%>=10 then a%=10: ' fin de la ligne
' *===*==***=*==*==*=====*{====*==*=====*==========}**====*==*==*==**==*====*==*==****===*==*==*=====
Dans la chaine For a% =, il y a le masque avec '*===*==***=* .... Ce que je voudrais c'est d'éviter de faire tout le teste pour savoir les positions de chaque étoile dans la liste Je voudrais obtenir quelque chose comme 2 5 8 9 10 etc et peut-être la position des chaines avec "{" et "}" en négatif. En lisant une position négative, on sait que c'est une chaine, la position absolu redonne celle-ci.
J'espère avoir réussi a être compréhensible. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 19:28 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 21:53 | |
| C'est fait... J'ai ajouté une fonction GenerateMaskList. Elle est identique à GenerateMask, sauf le dernier paramètre (la sortie) qui est object_internal(obj%) avec obj% étant le numéro d'un objet DLIST.
Là ou j'ai signalé la nouvelle version avec la fonction GenerateMaskList, il y a un programme de démo. | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 23:42 | |
| Merci Klaus. Je n'essayerai pas ce soir, j'ai la crève, et demain je retourne au bois. J'aurai bien aimé le résultat de suite. |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mar 13 Oct 2015 - 23:57 | |
| J'ai testé l'exemple, et c'est ce que j'attendais. La mise en pratique cela surement demain soir. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 0:04 | |
| - Citation :
- J'ai testé l'exemple, et c'est ce que j'attendais.
Alors ça va. Je suis content ! | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 0:48 | |
| J'ai du me relever pour prendre des granules, j'ai le nez complètement bouché. Je regrette de ne pas y avoir pensé plus tôt, mais peut importe. En voyant le résultat, j'aurai pu demandé de mettre les portions de code à la place dans le dlist. Cela autait été plus rapide, avec les guillemets inclus dans la portion de texte. A propos, je me rappelle que tu avais dis que des fonctions avaient étés retirées de KGF, car double emploi avec des commandes Panoramic, comme text_width(). Saches que j'ai vu que KGF est employé dans d'autres langages. Là je me couche. |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 14 Oct 2015 - 0:59 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 2:00 | |
| - Citation :
- Saches que j'ai vu que KGF est employé dans d'autres langages.
Ah bon ? Cela m'intéresse ! Aurais-tu des liens ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 3:00 | |
| - Citation :
- En voyant le résultat, j'aurai pu demandé de mettre les portions de code à la place dans le dlist.
J'ai ajouté une fonction GenerateMaskFragments qui fait exactement cela... Regarde le programme de démo. | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 8:25 | |
| Ce mec est génial. Je répond rapidement avant de partir. Ceux qui font un éditeur devraient regarder. Une fois définies les variables, 2/3 lignes pour mettre une ligne en morceau et colorer. Cela augmente la rapidité d'exécution du basic. Dieu existe, nous l'avons trouvé. Je sors. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 11:26 | |
| Plutôt que dieu, je préfère bon géni. J'aime bien le double sens que je trouve très approprié à Klaus ... | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 13:56 | |
| Klaus, d'abord pour ce qui concerne les sites, cela fait un bon moment que j'ai vu cela, et aujourd'ui je ne pourrai pas te dire où j'ai vu cela. Il me semble que la remarque sur KGF a été faite sur le forum Justbasic, mais vu que celui-ci me marche plus trop bien (d'ailleurs pour ma part, impossible de le faire fonctionner sur W7).
Maintenant, il se produit une erreur lors de la répétition de lecture de ligne avec la dernière fonction. Cela semble lié au dlist. J'ai essayé de fermer KGF à chaque boucle, et rouvrir en début. Ca ne change rien. L'erreur apparait après avoir fait clear N° du dlist. Si j'évite cette instruction,le programme continu, et se bloque plus loin. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 14:13 | |
| D'accord, j'ai vu le problème. Je cherche une solution et je te tiens informé. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 15:17 | |
| Ca y est - c'est corrigé. J'ai dû remplacer l'objet DLIST par un objet LIST (caché par HIDE). Cet objet est systématiquement vidé par les deux fonctions concernées - pas besoin de le faire en Panoramic. | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Mer 14 Oct 2015 - 19:25 | |
| Il y a un problème Klaus. Il n'y a pas un source qui ne bloque un moment à un autre. J'ai repris ton programme, et adapté pour lire un fichier source. - Code:
-
dll_on "KGF.dll" ' test_GenerateMaskList.bas
label start : width 0,1000 : height 0,650 dim a$, separ$, mask_separ$, mask_text$, mask_quote$, mask_out$, res%, g$ , i% , j , f$ ,h$
list 1 : top 1,80 : height 1,480 list 2 : top 2,80 : left 2,width(1)+10 : height 2,480 :' hide 2 list 3 : top 3,80 : height 3,450 : left 3,left(2)+width(2)+10 : hint 3,3 memo 10 : width 10,950 : bar_both 10 : height 10,80 : font_name 10,"Courier" button 20 : top 20,55 : left 20,width(1)+10 : caption 20,"Start" : on_click 20,start list 5 : left 5,420 : top 5,80 : width 5,500 : height 5,450 open_dialog 6 f$ = file_name$(6) : if f$ <> "_" then file_load 5,f$ mask_separ$ = "*" : mask_text$ = "=" : mask_quote$ = "{}" separ$ = " ,:<>='/*+-" : g$ = chr$(34) end ' ============================================ start: if count(5) > 0 for j = 1 to count(5) a$ = item_read$(5,j) if a$ <> "" caption 0,a$ +"<<== len(a$)" + str$(len(a$)) + " j="+str$(j) +" / "+str$(count(5)) mask_out$ = string$(len(a$)+1," ") : clear 10 res% = dll_call6("GenerateMask",adr(a$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),adr(mask_out$)) item_add 10,a$ item_add 10,mask_out$ res% = dll_call6("GenerateMaskFragments",adr(a$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),handle(2)) clear 3 for i% = 1 to count(2) if count(2) > 0 h$ = item_read$(2,i%) : item_add 3,h$ end_if next i% end_if next j end_if return |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Jeu 15 Oct 2015 - 0:32 | |
| Cela semble corrigé maintenant. Recharge la nouvelle version... | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Sam 17 Oct 2015 - 19:20 | |
| Il y a un problème Klaus, avec la fonction :GeneralMaskFragments Je n'arrivais pas à comprendre ce qui se passait, avec toutes les modifications. J'ai isolé une ligne du code qui fait défaut, et voici le programme: - Code:
-
teste() end =================== sub teste() dll_on "KGF.dll" dim_local cc$ list 6:width 6,150:height 6,500 dim_local separ$, mask_separ$, mask_text$, mask_quote$, mask_out$, res% mask_separ$ = "*" : mask_text$ = "=" : mask_quote$ = "{}" separ$ = "' =+,:()" cc$ = "main_menu 20:sub_menu 21:parent 21,20:caption 21,"+chr$(34)+"fichier"+chr$(34)
mask_out$ = string$(len(cc$)+1," ") res% = dll_call6("GenerateMask",adr(cc$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),adr(mask_out$)) res% = dll_call6("GenerateMaskFragments",adr(cc$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),handle(6)) end_sub |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Sam 17 Oct 2015 - 19:31 | |
| Est-ce sue tu as bien cette version: KGF.dll V5.18 du 015/10/2015 ? Chez moi, il affiche: ce qui semble correct... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Sam 17 Oct 2015 - 21:01 | |
| Ou est-ce que c'est le résultat du list à droite que tu veux, suivant ce code: - Code:
-
teste() end =================== sub teste() dll_on "KGF.dll" dim_local cc$, dd$ list 6:width 6,150:height 6,500 list 7:width 7,150:height 7,500:left 7,width(6) dim_local separ$, mask_separ$, mask_text$, mask_quote$, mask_out$, res%, mask_out1$ mask_separ$ = "*" : mask_text$ = "=" : mask_quote$ = "{}" separ$ = "' =+,:()" cc$ = "main_menu 20:sub_menu 21:parent 21,20:caption 21,"+chr$(34)+"fichier"+chr$(34) dd$ = "main_menu 20 : sub_menu 21 : parent 21 , 20 : caption 21 , "+chr$(34)+"fichier"+chr$(34)
mask_out$ = string$(len(cc$)+1," ") mask_out1$ = string$(len(cc$)+1," ") res% = dll_call6("GenerateMask",adr(cc$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),adr(mask_out$)) res% = dll_call6("GenerateMaskFragments",adr(cc$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),handle(6)) res% = dll_call6("GenerateMask",adr(cc$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),adr(mask_out1$)) res% = dll_call6("GenerateMaskFragments",adr(dd$),adr(separ$),adr(mask_separ$),adr(mask_text$),adr(mask_quote$),handle(7)) end_sub
Résultat: Si c'est ça, j'ai une petite modif à faire dans la DLL. | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Sam 17 Oct 2015 - 23:35 | |
| Je ne sais pas quand tu as changer de version. Je viens de télécharger la dernière, et le résultat est celui que j'attendais.
Merci pour ta réponse. Je te demande surtout de ne pas me prendre au mot, car je ne demande rien, et d'ailleurs cela m'obligerai à reprendre mon programme pour faire des testes, mais depuis vu que régulièrement il y a de nouveaux candidats pour refaire un IDE ou éditeur, ce serait de faire une fonction qui comme ici mettrait en list chaque partie d'une ligne Panoramic découpée par tes soins, sans avoir à mettre de masque, et peut-être avec un numéro devant ou dans une autre liste (ou grille), un n° de ce que c'est, comme 1=instruction 2=chaine etc... Surtout je ne le demande pas, mais c'est l'idée qui m'est venu à force de trafiquer les lignes basiques. A moins évidemment que d'autres le demande. Cela fait une sacrée différence de temps en traitement avec les lignes qui sont déjà décortiquées, que de faire le parser pour y arriver. Faut juste que l'affichage soit a hide pendant le traitement de la page. En basic interprété, on arrive presque à un langage primaire. Une seconde pour afficher une page entière traitée. Donc une ligne écrite au fur et à mesure avec la coloration syntaxique, devrait pouvoir suivre le curseur. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Dim 18 Oct 2015 - 0:42 | |
| Ok, je vois. Merci, Cosmos70. Donc, pour le moment, je n'y toucherai plus, sauf si tu me signales un bug. Ceci dit, c'est un plaisir que de s'attaquer à ce genre de défi technique, egt je serai toujours dispo pour ça ! | |
| | | Invité Invité
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. Dim 18 Oct 2015 - 0:45 | |
| J'arrète pas de me casser la tête, et je vois qu'il y a des erreurs dans la découpe d'une chaine. Essayes avec la ligne suivante, à la place de l'autre. - Code:
-
cc$ = "txt$ = "+chr$(34) +"je suis ici pour le plaisir." +chr$(34)+":' Je regarde la télé, et c'est beau à voir. Serait-il bien de bien penser?" Çà doit-être la ligne 11 je crois, dans le programme que j'ai mis. Edit: Et bien si je dois continuer à passer du temps à rechercher les erreurs, et que ça t'intéresse, et si tu as le temps, alors je suis partant. Cela fait deux jours que je tourne en rond sur ce programme qui n'avance, alors que je suis constamment solicité ailleurs. Cela fait plusieurs fois que je me dis qu'il faut que je reprenne depuis le masque de découpe de départ. Si tu t'y attaques, je laisse ce programme de côté le temps pour toi de relever ce défi, j'ai des choses plus importante à faire que de programmer. Il est évident que moi aussi j'aime les défits, mais il y a la vie à côté, et très peu de plaisirs. La seule chose est de me dire ce que tu veux faire, pour m'accorder avec toi. C'est peut-être Dimanche, mais pas pour moi, alors Il faut que je reprenne des forces. |
| | | Contenu sponsorisé
| Sujet: Re: Demande fonction KGF pour inclure une série dans une liste. | |
| |
| | | | Demande fonction KGF pour inclure une série dans une liste. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |