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
» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 13:15

» Casse-tête : Echanger les positions des cavaliers
par jean_debord Aujourd'hui à 10:21

» demande pour recuperer un text speciale
par silverman Hier à 23:00

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

» Déterminer le Handle de l’objet ayant le focus
par papydall Dim 16 Juil 2017 - 3:15

» Déterminer le HANDLE du Bureau
par papydall Dim 16 Juil 2017 - 1:59

» Généralisation de a fonction OBJECT_INTERNAL
par Klaus Dim 16 Juil 2017 - 1:10

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 V2.83 du 15/02/2014 - ajout fonction CreateMask

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: V2.83 du 15/02/2014 - ajout fonction CreateMask   Sam 15 Fév 2014 - 12:49

Nouvelle version:
KGF.dll V2.83 du 15/02/2014

Nouveauté:
ajout de la fonctioin CreateMask

Modules modifiés:
KGF.dll

KGF_SUB.bas

KGF.chm

KGF.doc

KGF.pdf

La doc et les sources sont à jour.

Cette fonction, d'après une suggestion de Cosmos70, construit une chaîne de caractères en sortie, représentant un masque pour une chaîne de caractères en entrée. Les paires de guillemets seront remplacés par des paires accolades, tout séparateur trouvé dans une liste de séparateurs est remplacé par un caractère masque symbolisant la présence d'un séparateur, et tous les autres caractères sont remplacés par un caractère masque symbolisant la présence d'un caractère texte normal.

Ainsi, voici le résultat pour un cas concret:
Citation :
'  For a% = 1 to 10:print "fort de toute expérience": next a%:if a%>=10 then a%=10: ' fin de la ligne
' *===*==***=*==*==*=====*{====*==*=====*==========}**====*==*==*==**==*====*==*==****===*==*==*=====
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Sam 15 Fév 2014 - 18:05

J'avais pas vu que c'était une nouvelle version que tu venais de créer.

Klaus! Plus fort que Lucky Lucke?  Very Happy  Il a la dégaine rapide!
 lol! 
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Sam 15 Fév 2014 - 20:44

Je reviens à la charge, car j'ai commis une erreur. J'ai publié un code avec un masque de parenthèses. J'avais bien marqué que c'étais pour le contrôle, car j'avais des erreurs lors de la conception du code.
Il n'est pas bon de mettre un masque différent pour les parenthèses.
Si j'utilise instr() pour progressé à la sortie du masque, je dois le faire pour "*" et pour "{" et comparer lequel est devant l'autre, ce qui complique et ralenti l'exécution du code. Pour le masque de fermeture, cela n'a pas d'importance, si il n'y a rien entre les deux parenthèses, je peux recherché l'étoile, ou l'accolade fermante.
Autrement à la place de instr(), il faudrait faire une boucle for/next et regardé le masque. C'est pas un avantage.

Désolé d'avoir montré une fausse piste.
@+
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 16 Fév 2014 - 0:20

Pas grave. Montre-moi ce que tu cherches vraiment - je peux sûrement adapter.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Dim 16 Fév 2014 - 1:23

@ Klaus,

Garde celle là quand même, elle peut servir... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 16 Fév 2014 - 3:23

Ah! j'arrive!
J'y ai repensé depuis: le plus simple car cela ne modifie presque pas le code que tu as du faire, c'est de mettre aussi une variable de remplacement pour les guillemets. Ainsi on représente les guillemets de la même manière, ou on ressort celui-ci. Peut-être concernant les guillemets, faudrait-il avoir un flag pour soit éviter les masques dans la chaine, soit faire comme si les guillemets n'avaient pas d'intérêt.
Je ne sais pas tous les cas que cette instruction peut avoir besoin,
mais cette méthode pourrait s'adapter à des cas non pensés.

Il ne reste qu'un seul argument. Où alors dans le masque, on évite le masque "=" qui n'a pas besoin d'être indiqué, c'est celui que tu choisis.

Qu'en penses-tu? Ce qu'on lit est le masque qui ressort par rapport aux caractères standards. Il n'est pas nécessaire d'indiquer un caractère générique. Il ne reste que celui du guillemet qui peut-être une option.
Si on a:
a$ = "for a% = 1" avec un retour:
m$= "---*--***-"
on sait que mid$(a$, instr(m$,"*"),1) est égal à " ", et on traite le contrôle espace. Il suffit de connaitre les caractères que tu as choisi, pour les prendre dans les contrôle.
De cette façon il y a assez de paramètres pour DLL.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 16 Fév 2014 - 12:29

J'ai ajouté un paramètre mask_quote à GenerateMask pour gérer la représentation des guillemets.

Si ce paramètre est la chaîne vide, les guillemets seront considérés comme du simple texte.

Si ce paramètre ne contient qu'un seul caractère, tous les guillemets seront remplacés par ce caractère. A fortiori, si ce caractère est chr$(34), les guillemets seront inchangés dans le masque résultant.

Si ce paramètres a 2 ou plusieurs caractères, le premier marquera le guillemet ouvrant, se deuxième le guillemet fermant. Exemple: "{}" pour reproduire le comportement de la fonction avant l'ajout de ce paramètre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 16 Fév 2014 - 14:03

Merci Klaus. Je viens de tester.

C'est pas tout à fait ce que je pensais, mais c'est sans importance, c'est très bien ainsi.
Il suffit pour les parenthèses de mettre "*}" pour les quillemets.
Lorsqu'on trouve le premier guillemet, on recherche "}" pour éviter les masques entre les guillemets. Donc c'est formidable. C'est une fonction généraliste qui peut servir à autre chose que d'avoir à coloriser une ligne de code.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Lun 17 Fév 2014 - 3:32

Je mets ici un petit programme de démonstration pour montrer que parfois, c'est pas une mauvaise idée que de demander une instruction à Klaus (sans vouloir le surcharger, évidemment)

Ce programme n'est pas optimisé, je m'y étais pris à l'envers comme ça m'arrive souvent, et il y a des routines qui pourraient diminer le code. Je n'ai même pas traité le code REM , je voulais voir la rapidité du programme.
Je n'ai pas utilisé le RichEdit, je ne le connais pas encore, seulement le seul objet de Panoramic qui permet la coloration: PICTURE.
Mon chrono étant en 100ème de minute: 6 centièmes pour afficher une page. Cela était impossible avant.
Spoiler:
 
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Lun 17 Fév 2014 - 4:20

Cela me réjouit que ma routine est non seulement fonctionnelle et utile, maius également rapide. C'est super. Juste pour avoir une idée de ce que ça représente en Delphi, voici le code complet de cette fonction:
Code:
function GenerateMask(txt,sep,msk1,msk2,msk3: pstring; out: integer):integer; stdcall; export;
var
  texte, separ, mask1, mask2, mask3, accol: string;
  i: integer;
  p: pointer;
begin
  texte := txt^;
  separ := sep^;
  mask1 := msk1^;
  mask2 := msk2^;
  mask3 := msk3^;
  if length(mask3)=0 then mask3 := mask2; // si mask_quote absent, on prend mask_text
  if length(mask3)<1 then mask3 := mask3 + mask3;
  accol := mask3[1];
  i := pos('"',texte);
  while i>0 do begin
    if i>1 then texte := LeftStr(texte,i-1) + accol + MidStr(texte,i+1,Length(texte))
          else texte :=                      accol + MidStr(texte,i+1,Length(texte));
    if accol=mask3[1] then accol := mask3[2]
                else accol := mask3[1];
    i := pos('"',texte);
  end;
  for i:=1 to length(texte) do begin
    if pos(texte[i],'{}')=0 then begin
      if pos(texte[i],separ)>0 then begin
        if i>1 then texte := LeftStr(texte,i-1) + mask1 + MidStr(texte,i+1,Length(texte))
              else texte :=                      mask1 + MidStr(texte,i+1,Length(texte));
      end else begin
        if i>1 then texte := LeftStr(texte,i-1) + mask2 + MidStr(texte,i+1,Length(texte))
              else texte :=                      mask2 + MidStr(texte,i+1,Length(texte));
      end;
    end;
  end;
  p := @texte;
  CopyTextToPanoramic(integer(p),0,out);
  result := 0;
end;

Ce n'est pas gros, n'est-ce pas ? En encore - on peut optimiser. J'ai privilégié la clarté d'écriture.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: Re   Lun 17 Fév 2014 - 4:37

Je vais regarder tout ça de près...de très près... Twisted Evil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Ven 21 Fév 2014 - 3:14

J'ai enfin réussi à prendre le temps de faire un vrai teste de coloration d'un source.
Apparemment il n'y a pas d'erreur.
Pour celui-ci moins de 4 secondes pour 150 lignes (sur un picture)
Spoiler:
 

EDIT: Plus pensé, il faut mettre le chemin d'un programme dans le memo 3, en ligne 14. J'avais oublié ce détail, et en ligne 21, l'adresse de kgf.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Ven 21 Fév 2014 - 3:25

Alors, ... heureux ? Very Happy  Very Happy  Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Ven 21 Fév 2014 - 3:32

Oui, j'arrivais pas à me décider à aller jusqu'au bout.
Par contre il y a une liste limitée de mots-clés, et qui ne concerne que ce programme. Mais le but n'était pas de coloriser sur un picture, mais de voir le résultat.

Il me tarde de pouvoir sortir de mes préoccupations du moment qui sont multiples. Je laisse le temps au temps!

J'ajoute que pour coloriser une seule ligne: 4000/150 = 26.centièmes de seconde soit 1000/25 donne près de 40 frappes par seconde. Donc on peut coloriser en temps réel
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 3:42

Bonsoir,
Il y a une chose que je ne comprend pas.
J'essaye d'adapter petit à petit la colorisation d'un source pour du html, en rapport à mon programme de site. J'ai ajouté le WB, mais depuis j'ai annulé celui-ci. Je n'ai plus de retour du masque , le dernier paramètre, et je ne vois pas pourquoi.
Spoiler:
 

Si il y a une interférence, j'ai annulé l'appel du WB, même en ignorant le handle(de la form).
Dans le memo 399, on met l'adresse d'un source.
En ligne 63, j'ai mis un message sur le contenu de a$ et b$. J'ai essayé de voir si il y avait pas un problème de dim_local avec b$. Bizarre. Les mots-clés sont limités, mais comme de toute façon il n'y a rien pour b$, cela ne donnera rien de toute façon.
Je pense maintenant à  Sleep  vu que ça ne marche plus.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10061
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 3:58

Difficile de tester ça. On n'a pas le fichier chargé en ligne 21, par exemple. Et je ne vois aucun appel de la fonction CreateMask, et je ne peux donc pas voir pourquoi il n'y a pas de retour...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 9:49

Bonjour,
Écoutes: Je me réveille, et avant de regarder mon ordi, je me demandais si la chaîne b$ était bien à la longueur de a$.
Je regarde et je vois que j'avais mis la ligne en commentaire.

J'en ai marre de me traiter d'idiot, alors je suis un con!.
Désolé du dérangement.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 10:54

Je viens de modifier mon programme, en enlevant tout ce qui est inutile.
En suivant les indications dans les commentaires sur différent fichier, vous pouvez tester le programme. Ici il y a une limitation des mot-clés. Ce n'est que pour tester la colorisation sur une page html.
Spoiler:
 
Si dants les data vous avec: DATA """, il faut le remplacer par: data "&quot;". Apparemment le source ici n'est pas respecté.


Dernière édition par cosmos70 le Dim 23 Fév 2014 - 12:39, édité 1 fois
Revenir en haut Aller en bas
Jicehel

avatar

Nombre de messages : 5840
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 12:30

Super boulot Cosmos.
Je n'ai pas encore testé, mais j'ai regardé le code et la réalisation est super intéressante Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   Dim 23 Fév 2014 - 12:43

Merci bien.

Je viens d'apporter une modification dans les datas. Il y avait une erreur sur un caractère, et j'ai remarqué qu'en première ligne, le guillemet était interprété sur le forum. Il faut le remplacer par DATA "&quot;" à la pace de DATA """ si c'est bien le cas chez-vous.
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: V2.83 du 15/02/2014 - ajout fonction CreateMask   

Revenir en haut Aller en bas
 
V2.83 du 15/02/2014 - ajout fonction CreateMask
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ajout de BB code
» Ajout d'onglet de forum
» Atribution de points par ajout d'image
» Ajout automatique des points avec payement Allopass
» [Membres] Ajout d'un champ à l'inscription pour la vérification des e-mails

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: