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
» Compilateur FBPano
par jean_debord Aujourd'hui à 11:07

» Documentation de KGF
par Klaus Hier à 22:52

» Zoom sur une portion d'écran
par JL35 Hier à 21:51

» KGF_dll - nouvelles versions
par Klaus Hier à 21:31

» double guillemets "" dans un EDIT
par pascal10000 Hier à 21:08

» Recherche d'une expression dans un source
par Marc 37 Hier à 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 17 Nov 2017 - 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

» Bizzarerie dans Edge
par Marc 37 Mer 15 Nov 2017 - 17:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
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 : 10126
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 : 10126
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 : 7997
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 : 10126
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 : 10126
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 : 7997
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 : 10126
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 : 10126
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 : 5859
Age : 45
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

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: