FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par papydall Aujourd'hui à 1:15

» mise a jour calculatrice
par joeeee2017 Aujourd'hui à 1:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Hier à 18:49

» [solved] 3D_LINE How to ?
par papydall Hier à 6:51

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Trois actions prioritaires

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jack
Admin
avatar

Nombre de messages : 1764
Date d'inscription : 28/05/2007

MessageSujet: Trois actions prioritaires   Mer 26 Avr 2017 - 22:10

Comme plusieurs membres de ce forum sont en train de développer un éditeur pour Panoramic, je ne peux que les encourager, et pour cela, voici mes trois prochaines actions prioritaires. Je vais me concentrer sur elles et tout le reste passera après.

1 - sortir une version instantanée V 0.9.28i2 possédant l'objet SYNEDIT.

2 - sortir une version de Make_EXE contenant cette version (V 0.9.28i2) et pouvant exécuter un source et signaler une erreur d'exécution.

3 - sortir une nouvelle version du compilateur correspondant à cette version V 0.9.28i2

Voici quelques détails.

Utilisation prévue de l'objet SYNEDIT

L'objet SYNEDIT est un éditeur de code source, avec des fonctions de recherche et de remplacement de chaînes de caractères.

Recherche d’une chaîne de caractères:
La fonction FIND(S$,N,P) recherche et sélectionne la chaine de caractères S$ dans le source de l'objet SYNEDIT numéro N, à partir de la position P, et retourne la position du dernier caractère de la chaine trouvée ou -1 si la chaine S$ n'a pas été trouvée.
Ainsi, il est facile de rechercher toutes les occurences d'une chaine de caractère en appelant la fonction avec le paramètre P fourni par un appel précédent.
(Pour les panoramiciens attentifs, ce fonctionnement ressemble à celui des fonctions CURVE_ANGLE ou CURVE_VALUE, pour lesquelles on appelle une fonction avec le résultat de l'appel précédent).

Remplacement d’une chaîne de caractères par une autre:
La fonction REPLACE((S1$,S2$,N,P) remplace la chaine de caractères S1$ par S2$ dans le source de l'objet SYNEDIT numéro N, à partir de la position P, sélectionne la chaine S2$ et retourne la position du dernier caractère de la chaine remplacée ou -1 si la chaine S1$ n'a pas été trouvée.
On peut ainsi facilement faire une boucle pour remplacer toutes les occurences d'une chaine de caractère par une autre, là aussi en appelant la fonction avec le paramètre P fourni par un appel précédent.

L'objet SYNEDIT permet de colorer et de donner un style aux mots-clés, aux commentaires, aux chaînes de caractères, à la "gouttière" (partie gauche pour la numérotation des lignes) au nombres dans un source, de choisir la taille et la police de caractères.

On spécifie les mots-clés par la commande ITEM_ADD.

Les délimiteurs de chaîne de caractères sont les guillemets.

L’indicateur de début de commentaire est l’apostrophe. Le saut de ligne marque la fin d’un commentaire.

Pour que les commandes de type chaîne de caractères s’adressent soit aux mots-clés, soit aux commentaires, soit aux chaînes de caractères, soit aux nombres, soit à la gouttière, on "cible" ces commandes:

SYNEDIT_TARGET_IS_KEYWORD : les commandes de type FONT s'adressent aux mots-clés
SYNEDIT_TARGET_IS_COMMENT : les commandes de type FONT s'adressent aux commentaires
SYNEDIT_TARGET_IS_STRING : les commandes de type FONT s'adressent aux chaînes de caractères
SYNEDIT_TARGET_IS_GUTTER : les commandes de type FONT s'adressent à la gouttière (numérotation des lignes)
SYNEDIT_TARGET_IS_NUMBER : les commandes de type FONT s'adressent aux nombres
SYNEDIT_TARGET_IS_OBJECT : les commandes de type FONT s'adressent à tout le source, c'est la redirection par défaut


Un petit exemple pour illustrer:

Code:
SYNEDIT 1:' création d'un objet SYNEDIT

ITEM_ADD 1,"print":' print devient un mot-clé
ITEM_ADD 1,"input":' input devient un mot-clé
ITEM_ADD 1,"combo":' combo devient un mot-clé

SYNEDIT_TARGET_IS_KEYWORD
FONT_COLOR 1,0,0,255:' les mots-clés seront colorés en bleu
FONT_BOLD 1:' les mots-clés seront en style gras

SYNEDIT_TARGET_IS_NUMBER
FONT_COLOR 1,255,0,0:' les nombres seront colorés en rouge

SYNEDIT_TARGET_IS_GUTTER
FONT_ITALIC 1:' les numéros de ligne seront en italique

FILE_LOAD 1,"source.txt":' on charge un source

DIM P
WHILE P<>-1:P=REPLACE("print","imprime",1,P):END_WHILE
' tous les "print" sont remplacés par "imprime"

Modification de Make_EXE

Je vais créer une option -r pour que Make_EXE exécute le source spécifié: MAKE_EXE -r "source.bas" H
H est le handle de l'appelant.
Ainsi, en cas d'erreur d'exécution, MAKE_EXE avertit l'appelant en déclenchant un événement utilisateur et en lui passant par exemple le numéro de la ligne et le code de l'erreur (ou d'autres informations) par les paramètres USER_EVENT_LPARAM et USER_EVENT_WPARAM.
L'appelant peut ainsi afficher un message d'erreur et positionner un curseur sur la ligne correspondante dans le source, ou la colorer...

Le compilateur

Il contiendra la version actuelle de Panoramic.
Il aura quelques restrictions (qui sont les mêmes que lors de la précédente version) et aussi quelques bugs qui seront à découvrir... Very Happy

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 22:30

Humm ! Tous cela est très intéressant ! drunken

J'ai hâte de voir la suite. Enfin bon comme d'habitude... sunny
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 22:30

Merci Jack.

Tout part d' une bonne idée mais cela dit, là, tu m' as perdu.
Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 22:32

Citation :
Ainsi, en cas d'erreur d'exécution, MAKE_EXE avertit l'appelant en déclenchant un événement utilisateur et en lui passant par exemple le numéro de la ligne et le code de l'erreur (ou d'autres informations) par les paramètres USER_EVENT_LPARAM et USER_EVENT_WPARAM.
L'appelant peut ainsi afficher un message d'erreur et positionner un curseur sur la ligne correspondante dans le source, ou la colorer...

Oui Yannick pour cette partie je suis comme toi, mais bon, Jack ou Klaus nous expliquerons j'en suis sûr... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 22:36

Un petit fichier texte de trois lignes en lieu et place de l' exe était beaucoup plus simple. Wink
Je ne sais pas si je vais pas rester sur KGF là, au moins, je commence à comprendre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1764
Date d'inscription : 28/05/2007

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 22:43

Yannick a écrit:
Un petit fichier texte de trois lignes en lieu et place de l' exe était beaucoup plus simple.

Comment ton éditeur sera t-il averti que l'exécution a rencontré un problème et qu'un fichier texte est à exploiter ?

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 27 Avr 2017 - 0:03

Actuellement la prévisualisation est lancé par la commande "Execute F" placé dans un timer de 20 seconde 
après l' appel à Make_Exe.exe. il me suffit de tester ( c' est déjà codé + ou - dans SimpleEditor )


voilà une partie de la procédure Preview()
Code:
PreviewFile$ = ActiveDir$+"SimpleEditorPreview.exe"
 if file_exists(PreviewFile$)=1 : file_delete PreviewFile$ : end_if
 
 ficlog$ = ActiveDir$+"SimpleEditorPreview.log"
                if file_exists(ficlog$)=1 : file_delete ficlog$ : end_if
 
 dir_change Dir_fic$
 execute_wait MakeExe$+chr$(32)+"-e"+chr$(32)+Tmp_File$
 dir_change Path$
 file_delete Tmp_file$
 
 laptime%=0
 Timer_on TimerPreVi%


et voilà le label du on_timer :

Code:
VerifPreVi:
    laptime%=laptime%+1
    if file_exists(PreviewFile$)=1
       Timer_off TimerPreVi%
       dir_change ActiveDir$
       execute PreviewFile$
       dir_change Path$
    else
       if file_exists(ficlog$)=1
          Timer_off TimerPreVi%
          file_open_read F_or%,ficlog$
          file_readln F_or%,v$ : ErrorLine%=val(v$)
          file_readln F_or%,v$ : ErrorType%=val(v$)
          file_readln F_or%,v$ : ErrorDef$ =v$
          file_close F_or%
          file_delete ficlog$
          mess2$ = "ERROR !"+chr$(13)+"line "+str$(ErrorLine%)+" - Type "+str$(ErrorType%)+chr$(13)
          mess2$ = mess$+ErrorDef$
          m2%= message_warning_ok(mess2$)
          GotoLine(ErrorLine%)
       end_if
    end_if
    if laptime%=40
       Timer_off TimerPreVi%
       m2% = message_warning_ok(PreviewFile$+chr$(13)+"Ce fichier est introuvable !")
    end_if
 return

J' ai mis 20 seconde environ au timer mais, pour exemple, Make_exe met moins de 5 secondes pour créer un exe partir du source de SimpleEditor qui fait 4152 lignes.

Pour des tests sur des sources plus long il faudra attendre la version 2.0 ou quelques années... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 27 Avr 2017 - 0:28

Et tiens, je te retourne la question.
Comment fera t on pour savoir que les deux variables ont changés
Perso, j' ai rien pipé à User_Event_LParam et sa copine.
Comme je suis perdu sur les Command et Library mais c' est un autre sujet.

Edit: 

Mais je n' ai rien contre un cours magistral, simple, clair 
comme pour un gosse de 46 piges qui n' a pas trop usé les bancs de l' école.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 466
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Trois actions prioritaires   Jeu 27 Avr 2017 - 2:12

Quelles belles nouvelles! Very Happy
Concernant l'objet synedit, auras t-on la possibilité de positionner le curseur sur une ligne en particulier? Et pour faire de la sélection de texte à la souris, pourras t-on retrouver le bloc de texte surligné par la souris? Ca serait utile pour mettre un bloc en commentaire par exemple, l'indenter, le déplacer, etc...

Jack a écrit:
Comment ton éditeur sera t-il averti que l'exécution a rencontré un problème et qu'un fichier texte est à exploiter ?
Après un EXECUTE_WAIT "make_exe -r source.bas", si l'exécution a rencontré un problème, make_exe s'arrête sans avertissement et génère un fichier d'erreur. Il suffira de vérifier la présence de ce fichier pour l'exploiter. Ce fichier est supprimé à chaque lancement de make_exe, donc si pas de fichier, pas d'erreur.

Jack a écrit:
Il aura quelques restrictions (qui sont les mêmes que lors de la précédente version) et aussi quelques bugs qui seront à découvrir...
en voilà 2 en relation avec 'make_exe":
la commande 'EXECUTE' ne supporte pas le passage de paramètre, et du coup, n'éxecute rien
la commande 'EXECUTE_WAIT' ne supporte pas les noms long de répertoire, et les pramètres passés à cette commande sont interprété comme des fichier à lancer; cela génère des erreurs de fichiers introuvables
source de test:
Code:
left 0,1000
 print "Test execute"
' dir_change "C:\Program Files\Panoramic Editor V 0.9.27"

' execute_wait "C:\Program Files\Panoramic Editor V 0.9.27\make_exeDL.exe -r source.bas"   :' espaces non supporté

 execute_wait "C:\PROGRA~1\PANORA~1.27\make_exeDL.exe -r source.bas" : end                :' fichier "-r source.bas" non trouvé


' execute "C:\Program Files\Panoramic Editor V 0.9.27\make_exeDL.exe -r source.bas"        :' make_exeDL.exe non éxecuté
 
' execute "C:\Program Files\Panoramic Editor V 0.9.27\make_exeDL.exe"        :' ok

et le source du fichier make_exeDL.exe:
Code:
dim i
for i=0 to param_number
print "paramètre n°";i;" = ";param_value$(i)
next i
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5857
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Trois actions prioritaires   Jeu 27 Avr 2017 - 9:58

Super Nouvelle et ne t'inquiète pas Yannick: moi j'ai compris alors tu penses bien que Klaus nous fera rapidos une mise en application dans sa version de l'éditeur dont tu pourras t'inspirer et qu'il t'aidera à mettre à pratique comme à son habitude. C'est très propre comme fonctionnement et ça évite de créer des fichiers partout (avec ou sans problème d'espaces ou de noms courts/ long, de changement de répertoire etc ...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Trois actions prioritaires   

Revenir en haut Aller en bas
 
Trois actions prioritaires
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Afficher les actions clavier et souris pour les tuto'sMakers
» SUMMER STAR: Un brin de bravoure pour trois grains de folie.
» Les Trois Caballeros
» Pépin trois pommes courageux chevalier.
» Ecran bleu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Ce qui est en cours ...-
Sauter vers: