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
» Planétarium virtuel.
par Oscaribout Aujourd'hui à 19:45

» 11 (en analyse): commandes sur TAB et SUB_MENU.
par Jack Aujourd'hui à 14:10

» 10 (en analyse): Erreur sur variable locale.
par Jack Aujourd'hui à 14:05

» Métamatière, éternité et renouvellement
par Oscaribout Aujourd'hui à 12:40

» De retour...
par Yannick Hier à 15:11

» bug SEVERE fnc+sub : (35)name already defined
par Oscaribout Dim 12 Aoû 2018 - 23:55

» ajouter des blancs dans un TXT
par silverman Dim 12 Aoû 2018 - 15:38

» Encadrement
par Jean Claude Dim 12 Aoû 2018 - 11:53

» Des rectangles...
par JL35 Dim 12 Aoû 2018 - 10:53

» TRIGGER_KEY_COMBINED_TOUCH
par Jean Claude Mar 7 Aoû 2018 - 20:58

» ITEM_SELECT N,L pour synedit
par Jean Claude Mar 7 Aoû 2018 - 19:11

» amélioration panoramic
par silverman Dim 5 Aoû 2018 - 18:34

» Commande file_readln.
par Pedro Alvarez Dim 5 Aoû 2018 - 17:08

» Klaus ?
par Jack Sam 4 Aoû 2018 - 22:48

» Défragmentation du disque dur
par JL35 Sam 4 Aoû 2018 - 21:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2018
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 Trois actions prioritaires

Aller en bas 
AuteurMessage
Jack
Admin
avatar

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

MessageSujet: Trois actions prioritaires   Mer 26 Avr 2017 - 21: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.1fr1.net
Minibug

avatar

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

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 21: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 http://gpp.panoramic.free.fr
Yannick

avatar

Nombre de messages : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 21: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
Minibug

avatar

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

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 21: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 http://gpp.panoramic.free.fr
Yannick

avatar

Nombre de messages : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 21: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 : 1901
Date d'inscription : 28/05/2007

MessageSujet: Re: Trois actions prioritaires   Mer 26 Avr 2017 - 21: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.1fr1.net
Yannick

avatar

Nombre de messages : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 23: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 : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 26 Avr 2017 - 23: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 : 664
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Trois actions prioritaires   Jeu 27 Avr 2017 - 1: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 : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Trois actions prioritaires   Jeu 27 Avr 2017 - 8: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
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Afficher les actions clavier et souris pour les tuto'sMakers
» Pépin trois pommes courageux chevalier.
» Ecran bleu
» Emplois au recensement 2011
» effectuer des actions lors de la minisation de la fenêtre .

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: