Coloration syntaxique avec tparser !!

Soyez le premier à donner votre avis sur cette source.

Vue 12 938 fois - Téléchargée 1 657 fois

Description

La classe TParser est une classe non documentée de Delphi. Elle permet de découper une chaîne de caractères en "tokens". On peut ensuite parcourir la chaîne token par token, récupérer la position dans la chaîne du token en cours...

Cette source permet grâce à cette classe de colorer le texte d'un fichier DFM comme le fait Delphi grâce à un code très simple qui se résume en gros à une boucle While...

---------
Mise à jour :
Deux nouvelles classes pour colorer le code pascal des fichiers .pas.
Une classe similaire à celle créée par Delphiprog (TDfmParser), TPasParser, qui descend d'une version remaniée de TParser.
Des modifications ont effectivement été nécessaires pour que la classe devienne compatible avec le parsing des fichiers .pas
Comme j'ai modifié un copier/coller de la classe TParser, j'en ai profité pour commenter tout le code ! Avis à ceux qui cherche à comprendre plus en détail le fonctionnement du Parser !

Le ZIP ne contient maintenant plus que la version de Delphiprog du programme de coloration, mais largement commentée... Si toutefois vous avez des questions, laissez un commentaire ou envoyez-moi un mail !

BONUS !! ;o)
Inclus également dans le ZIP, un fichier d'aide .hlp sur la classe TParser, créée par Delphiprog. Grâce à lui, cette classe sort donc maintenant du registre "Non documentée" !!

------
Nouvelle mise à jour :
Le passage d'une ProgressBar en paramètre (que je n'avais pas signalé avant...) est maintenant facultatif, pour rendre l'interface et le code du prog indépendants (suite à un nouveau bon conseil de delphiprog !! ;o) )
J'ai remanié la classe TDfmParser. Le code gérant la colorisation utilise maintenant l'approche du Case Parser.Token Of et passe ainsi d'un code de 60 lignes à un code de 32 !!
La dite classe utilise également la version "corrigée" du TParser, TModifParser, pour faciliter l'interprétation du code
Par la même occasion, l'utilisation du Case permet de corriger le bug signalé avec la propriété DesignSize, qui est donc à présent entièrement colorée !

Source / Exemple :


Tout est dans le ZIP !

Conclusion :


Normalement tout fonctionne comme il faut... à part un cas de propriété qui n'est pas coloré entièrement. voir l'unité .pas !
[Une nouvelle version devrait rapidement venir corriger ce problème]
(*C'est maintenant fait !*)

Sinon, tout commentaire est accepté ! ;-)

-------

Merci à Nono40 et à Delphiprog pour leur aide, toujours précieuse ! (et a special thanks pour le fichier d'aide !)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
15
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
21 novembre 2010

Bonjour
Je confirme, avec D2007 c'est OK mais avec 2009 pb,
a la place des caractères, j'ai des carré si je regarde dans la var FSoursPtr
avant les #$A0D
Help please...
A+
Messages postés
15
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
21 novembre 2010

Bonjour et merci de jeter un œil.
j'ai pris en compte la dif des tostring et mettant classes.tostring mais apparemment je ne rentre même pas dans la boucle
while Parser.Token <> toEOF do //tant qu'on est pas à la fin du fichier...

pb de caractère ...

A+
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Bon, j'ai jeté un oeil à ce projet. Jusque Delphi 2007, tout va bien et aucun changement n'est nécessaire. De plus, le contenu du buffer est parfaitement lisible pour un occidental moyen comme moi. En revanche, avec Delphi 2009, les caractères contenus dans le buffer ressemblent à du chinois ou du japonais, va savoir...
Je continue de chercher et je m'oriente vers un problème de jeu de caractères à priori. A suivre...
Messages postés
871
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
3 novembre 2005
1
Salut Delphiprog :)

Merci pour les investigations !

Pour ce qui est de ta participation je m'en souviens assez bien de mon côté !
Je crois que tu m'avais généré la doc et sans doute aidé sur le code avec Nono ^^
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Bonsoir Clio908 et Olivier,

Delphi 2009 interprète toString comme un appel à la méthode toString définie dans la classe TObject. Il faut donc remplacer tous les toString par Classes.toString à chaque fois que le compilateur bute sur une erreur de ce type. En revanche, je n'obtiens pas les autres erreurs relevées par Clio908.
Néanmoins l'application compilée avec Delphi 2009 ne colorise pas le code contenu dans l'éditeur comme attendu et semble ne rien faire.
Je continue de rechercher la raison et je reviendrai alors vers vous.

PS : je ne me souvenais plus d'avoir apporté ma contribution à ce projet...
Afficher les 27 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.