Epb v2.68

Programmation d'applications complexes
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Epb v2.68

Message par Micoute »

Merci Zorro pour ces nouvelles rassurantes.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

(apres effacement de mes gif animé par un modo, qui a du se dire qu'elles etaient trop grosses ... je me disait qu'aujourd'hui tout le monde a au mini 1920x1080 ... mais j'oubliais les telephones portable et autre tablette bas de game)

j'ai moi meme effacé mes messages... je me suis rendu compte que j'exprimais mal le probleme ....

en fait le challenge , c'est pas de trouver la position d'un mot "procedure" et son numero de ligne , qui avec findstring() ne prends
pas trop de temps ...

le probleme c'est de trouver TOUTES les occurences de Procedure , avec les numero de lignes ou ils apparaissent

et l'air de rien , sur un code de 9000 lignes , ben ça peut prendre beaucoup plus de temps ;)

si en plus on considere, qu'il faut ranger dans une liste (ou tableau) le nom de la procedure , et le numero de ligne
donc , qu'a chaque fois qu'on trouve une occurence, il faut effectuer un traitement particulier d'analyse de la ligne
de la séparation de celle-ci en "morceaux" pour etre attribué a une liste ou tableau ... là , les quelque milliseconde de recherche par occurence trouvée
se transforme en secondes pour un texte complet .....



l'editeur officiel doit utiliser une subtilité de scintilla que j'ignore , j'imagine une forme de tag , invisible , soit au niveau du contenu de la ligne
la mise a jour de l'onglet de droite que ce soit pour une procedure, ou un signet, est quasi instantané , quelque soit la taille du listing !!
je n'imagine meme pas qu'il utilise un systeme de recherche ... c'est trop rapide ...

de plus, moi j'utilise dans mon onglet le numero de la ligne, pour pouvoir sauter dessus lorsqu'on clique sur l'onglet de droite ....
l'editeur officiel, lui n'affiche aucun numero de ligne dans cet onglet ... donc, comment ferai t'il son "saut" a la bonne ligne,
si le numero de ligne n'est pas retenu quelque part ?? ....

mon systeme marche tres bien sur de petits listings
l'editeur officiel , lui fait un tour de magie !! LOL que franchement je ne comprends pas 8O
(a moins d'une fonction scintilla special ? .. )
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

merci , je vais regarder ta technique :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

oui effectivement, c'est super rapide ...

faut que je regarde ces expressions regulieres... 8O

faut que j'isole nom de procedure + parametre (avec parenthese) -->nom_procedure(par,par,..ect ), <-- pour la completion
et aussi juste le nom de procedure sans parenthese et parametre <--- pour l'onglet
si en plus j'avais le numero de ligne...ça m'arrangerai bien <--- pour les sauts plus tard...et puis j'aime bien les avoir dans l'onglet

je vais faire mes propres recherches ;) ... je n'attends pas un code tout cuit :lol:

en tout cas, merci bien, tu vas peut etre , etre a l'origine de la reprise de EPB :) carrement ça me debloque...

j'aime bien travailler sur les Chaines, mais a l'ancienne (mid() Left() right() findstring() etc ... ) les expression regulieres, je ne maitrise pas :)

ps: a ta santé (avec la meilleurs bierre du monde ! ); Image
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

arf!! j'etais tout fier de te montrer mon complement du regex
pour avoir la procedure complete :mrgreen:

Code : Tout sélectionner

If Not CreateRegularExpression(0, "\bprocedure[ .]{1,}[a-zA-Z_0-9-\(.\)-,-$-*- ]+", #PB_RegularExpression_NoCase)
vais tester ton code . Merci :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

oui je prends aussi le type , puisque ceci sera pour les completions ...

regarde j'apprends vite :)

j'ai repris ton premier code , et je rajoute le numero de ligne ;)

grace a toi je pense que EPB va prendre un coup de turbo :)

Code : Tout sélectionner

; Mémorisation fichier de test (code pb 9800 lignes 127 procedures)


CallDebugger
file.s=OpenFileRequester("ouvre un pb","d:\","*.pb",0) 
If file.s<>""

Debug "Lecture Fichier source en cours..."
ReadFile(0,file.s)
Deb = ElapsedMilliseconds()
While Not Eof(0)
    Txt$ = ReadString(0, #PB_File_IgnoreEOL)
Wend   
CloseFile(0)
Fin = ElapsedMilliseconds()
Debug "Lecture Terminée. (" + Str(Fin - Deb) + " ms)"
Else
	End
EndIf

; Analyse
If Not CreateRegularExpression(0, "\bprocedure[ .]{1,}[a-zA-Z_0-9-\(.\)-,-$-*- ]+", #PB_RegularExpression_NoCase)
    Debug RegularExpressionError()
    End
EndIf

Debug "Analyse..."
Deb = ElapsedMilliseconds()

If ExamineRegularExpression(0, Txt$)
	Debug "--- Resultat"
	While NextRegularExpressionMatch(0)
		i + 1
		pos_procedure=RegularExpressionMatchPosition(0)
		Debug "Offset: " + LSet(Str(RegularExpressionMatchPosition(0)), 8, " ") + " - " +RegularExpressionMatchString(0) +"ligne numero:"+CountString(Left(Txt$,pos_procedure), #CRLF$) + 1
	Wend   
EndIf
Debug ""

Fin = ElapsedMilliseconds()
Debug "Analyse Terminée. (" + Str(Fin - Deb) + " ms) " + Str(i) + " Procédures"
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

merci encore :)

je vais faire ensuite l'adaptation pour les signets
(lignes commençant par ";-" ou ";{" ou ";{-" )



et aussi les constantes (le plus simple ) lignes commençant par "#" :)

mais là , c'est Dimanche , je vais m'arreter là :)

bon Dimanche a toi , (et a ceux qui lisent ) a+++ :)

ps: pour le type c'est pas trop grave , un traitement finale a base de Stringfield() ne prends pas beaucoup de temps
le plus long etant bien la recherche , et grace au regex , ben ... ça le fait , je pense :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Epb v2.68

Message par Ollivier »

@marc56

Il y a PeDe qui est à 450MHz ici. Est-ce que tu pourrais préciser à quelle vitesse tourne ton petit i3, et avec combien de coeurs?

@zorro

J'ai vu ton message hier et, à part ignorer que c'était un GIF, ton message était des plus orthodoxes. Perso, juste pas le temps d'y répondre. Quasiment comme maintenant d'ailleurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

Marc56 a écrit :je vais faire ensuite l'adaptation pour les signets, (lignes commençant par ";-" ou ";{" ou ";{-" )


je coince justement la dessus en ce moment , j'ai testé sur des sites online
par exemple celui ci
https://regex101.com/

si je met "^;(\{|\-).+" en regex pour ce texte : ça marche !! . mais dans Purebasic, ça ne marche plus !??
;- test 1
;{ test 2
; simple commentaire 2
;}
;{- test 3
; simple commentaire 3
;}
resultat :

Image


du coup, je suis pas sur que purebasic interprete les regex comme il faut ...
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

si ça marche , a condition d'ajouter le multiligne …

Code : Tout sélectionner

If Not CreateRegularExpression(1,  "^;(\{|\-).+", #PB_RegularExpression_NoCase|#PB_RegularExpression_MultiLine)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

je te remercie pour les infos concernants les regex
je voulais juste que tu saches que je ne me sert absolument pas de tes exemples concernant Scintilla
EPB etant fait de façon différente... je ne pourrai de toute façons pas greffer tes exemples...
donc peut etre eu t'il fallu que tu post ces superbes exemple dans un topic dédie ou mieux, a la suite du tuto de Falsam
sur Scintilla ... :)

pour tes premières remarques
Marc56 a écrit :Ton "^;(\{|\-).+" peut s'écrire plus simplement "^;[-{].+"
Les caractères dans les classes [] n'ont pas besoin d'êtres "échappées" \ (saut ])
[-{] suffit
oui , je le savais , note que j'utilise un groupe () et pas une classe []....
et j'ai vu pléthore d'exemples sur le net qui échappent dans les groupes... alors dans le doute ...;)
Les procédures et commentaires ne sont pas forcement en début de ligne, je propose donc
"\s?;[-{].+"
Ici je traite uniquement d'éventuels espaces ou tab à gauche.
les Signets ne sont pas des commentaires ordinaire, ils ne peuvent pas etre ailleurs qu'au debut d'une ligne !!

les procedures c'est la meme chose, ont les ecrit toujours en debut de lignes (dans EPB,je considère qu'une tabulation est un debut de ligne ;) )
en principe seul les declaration des procedure m'interresse ... donc elles sont ecrite en debut de ligne :)



dans EPB , je filtre de toutes façons les espaces et les Tab (Trim() )
les regex ne me servent qu'a trouver le mot...(et c'est deja énorme le gain de temp)
le traitement, je le fait avec les fonctions string de Purebasic .....

si j'avais a refaire un éditeur a partir de zero , ce serai bien différent ... là je compose avec la librairie "Go-Scintilla"
qui m'apporte une simplicité de codage, mais aussi beaucoup de lenteurs parfois ...
si c'etait a refaire, je ne passerai pas par cette librairie ....

d'ailleurs, il me reste de grosse lenteurs, il faut que j'arrive a trouver d'ou ça viens ....
j'ai un gros soupçon concernant les complétions de Go-scintilla .... :)

ps: j'ai testé
"\s?;[-{].+"
sur le site https://regex101.com/
je ne suis pas convaincu ....

voici ce que le site me renvoi c(regarder les sélections en bleu )
Image

voici ce que j’obtiens avec mon regex
Image
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb v2.68

Message par Zorro »

je sais pas pourquoi, mais je sent que ça te motive a faire ton propre editeur :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Epb v2.68

Message par Ollivier »

Moi, ces machins-là, Scintilla et RegEx, c'est comme la pipe : c'est pas pour moi.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Epb v2.68

Message par Ollivier »

Olliv a écrit :@marc56
Il y a PeDe qui est à 450MHz ici. Est-ce que tu pourrais préciser à quelle vitesse tourne ton petit i3, et avec combien de coeurs?
Prévenez s'il vous plaît quand vous supprimez un message sinon le sujet n'a ni queue ni tête. Tu avais donc indiqué que tu mettais ta config dans ta dignature.

Donc, en gros, PeDe a un engin 4 fois moins rapide que ton << petit i3 >> qui est déjà à 450 MHz. De souvenir, je suis passé d'un 33MHz à un 450 MHz. On peut vraiment faire un paquet de choses impossibles avec un 33 MHz. C'est une chance de pouvoir faire tourner des programmes sur d'anciennes config sans prise de tête d'adaptation.
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Epb v2.68

Message par Marc56 »

Ollivier a écrit : Il y a PeDe qui est à 450MHz ici. Est-ce que tu pourrais préciser à quelle vitesse tourne ton petit i3, et avec combien de coeurs?

Prévenez s'il vous plaît quand vous supprimez un message sinon le sujet n'a ni queue ni tête. Tu avais donc indiqué que tu mettais ta config dans ta dignature.
Donc, en gros, PeDe a un engin 4 fois moins rapide que ton << petit i3 >> qui est déjà à 450 MHz. De souvenir, je suis passé d'un 33MHz à un 450 MHz. On peut vraiment faire un paquet de choses impossibles avec un 33 MHz. C'est une chance de pouvoir faire tourner des programmes sur d'anciennes config sans prise de tête d'adaptation.
1. J'ai prévenu que je déplaçais mes exemples pour ne pas polluer le topic de zorro. Les articles ont ensuite été supprimés dans la journée pour garder le topic propre (j'approuve ce nettoyage)
2. Il n'y a plus grand monde pour utiliser des vieux coucous et encore moins développer dessus. Ma mini tour i3 m'avait coûté en 2012 le prix d'une smartphone ou tablette moyenne gamme (299€ (UC seule neuve)) pour ça: Intel i3-3220 @3.30 GHz, 2 coeurs, 4 threads - RAM 16 Go (dont 8 ajouté pour qqs euros) - Nvidia GT 620 1920x1080 DPI 100%.

(Allègement du cloud et recentrage topic: Un modo pourra aussi supprimer cet article après le weekend par exemple)
:)
Répondre