Colorisation syntaxique de code vb6 (html)

Soyez le premier à donner votre avis sur cette source.

Vue 10 185 fois - Téléchargée 967 fois

Description

Bonjour,

Je sais que certaines sources existent sur le site, pour le faire...
mais je voulais faire ma version, que je puisse facilement intégrer dans mes projets.
elle colorie :
- les chaines de caractères
- les numériques
- les numéros des lignes
- les étiquettes (destinations des GoTo)
- les commentaires
- les mots clés
- une liste de mos clé 'perso'

Il s'agit d'un module de classe qui enrichit un code source VB de balises de formatage HTML.

Le but ? pouvoir exporter du code VB6 coloré, vers le presse papier, des fichiers de documentation, etc.

J'ai tenté de faire quelque chose de rapide... et de personnalisable

Le zip inclu une feuille de test, qui permet de vous montrer la mise en oeuvre de la classe CSyntaxHighlighter.
le but de cette feuille n'est nullement d'être un visionneur de code source... c'est juste, une DEMO ^^

Source / Exemple :


Public Sub ColorizeFile(ByRef vsFilePath As String)
Dim ConvertVB6ToHTML As String
Dim sContent As String
Dim iFile As Integer

    '# Pas top de mettre cela ici, coté perfs...
    '# c'est juste pour que les changements du fichier custom.txt
    '# soit pris en compte au prochain coloriage.
    moSyntax.AddCustomKeywords App.Path & "\custom.txt"

    iFile = FreeFile
    Open vsFilePath For Input Lock Write As #iFile
        sContent = Input(LOF(iFile), #iFile)
    Close #iFile

    CcWeb.Document.body.innerHTML = moSyntax.Convert(sContent)
End Sub

Conclusion :


J'ai tenté d'être exhaustif, merci de me signaler les syntaxes / mots clé qui ne seraient pas colorés...
ca ne concerne pas le fichier Custom qui n'est là qu'a titre d'exemple... libre a vous de l'enrichir comme bon vous semblera.

voici comment cela fonctionne :

le but est d'établir une cartographie du code a convertir.
on isole les commentaires, les chaines de caractère, etc.

ensuite, on parcoure le tableau qui sert pour la carte, et on ajoute les balises HTML adéquates...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
10
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
3 mai 2011

Génial!!!!
J'ai eu un ptit soucis (ieframe.dll\1) venant de ie7.
D'après un post:
http://www.vbfrance.com/forum/sujet-PROBLEME-IE7-VB6-IEFRAME-DLL_655959.aspx
C'est réglé.
1 GRAND MERCI
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
il faut enregistrer dans un clipboard de format HTML
regarde le code de l'addin:

http://www.vbfrance.com/code.aspx?ID=41455

Dans ModMain.bas, tu as la fonction:

Private Sub GenerateHTMLClipboard()
Dim pData As Long
Dim nLength As Long
Dim sCode As String
sCode = moHighlighter.Convert(Clipboard.GetText)

nLength = Len(sCode)

'# On génère l'entête HTML Format
sCode = "Version:0.9" & vbNewLine & _
"StartHTML:00000097" & vbNewLine & _
"EndHTML:" & Format$(170 + nLength, "00000000") & vbNewLine & _
"StartFragment:00000134" & vbNewLine & _
"EndFragment:" & Format$(134 + nLength, "00000000") & vbNewLine & _
"<html>" & vbNewLine & _
"<!--StartFragment -->" & vbNewLine & _
sCode & vbNewLine & _
"<!--EndFragment-->" & vbNewLine & _
"</html>" & vbNewLine

'# On place notre buffer dans le presse papiers
mhData = GlobalAlloc(GMEM_MOVEABLE, Len(sCode))
If mhData Then
pData = GlobalLock(mhData)
If pData Then
CopyMemory ByVal pData, ByVal sCode, Len(sCode)
GlobalUnlock mhData
End If

OpenClipboard mhCBWindow
SetClipboardData HTML_FORMAT, mhData
CloseClipboard
End If
End Sub
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
Bonjour Renfiels et à tous,
Je suis repassé sur cette source par hazard et comme à l'époque je n'avais pas su le charger j'ai recommencé, et miracle.. OK du premier coup, c'est pas qu'il est rapide je dirais plutôt que c'est immédiat !.
J'ai cependant une question, j'ai ajouté une fonction (un bouton) permettant de traiter directement le presse-papier, ca fonctionne, mais je voudrais remettre le texte modifié dans le presse-papier mais je n'y arrive pas. Pourtant c'est possible puisque quand je fait un copier/coller ca fonctionne.
Je n'ai pas d'aide sur le WebBrowser donc je ne sais pas m'aiguiller sur ce sujet.
j'ai essayer avec...
Private Sub Command1_Click()
Dim sContent As String
If Clipboard.GetFormat(vbCFText) Then
sContent = Clipboard.GetText
CcWeb.Document.body.innerHTML = moSyntax.Convert(sContent)
Clipboard.Clear
' Clipboard.SetText CcWeb.Document.body.innerHTML, vbCFText
End If
End Sub
--------------------------------------------------------------------------------

By Renfield
Mais ca va pas, Un ptit coup de main ?
Merci d'avance.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
non reproduit chez moi....

les commentaires sont recherchés en premier. par la suite, ils sont carrément enlevés de la chaine de départ, évitant que tout ce qu'ils contiennent soit trouvé par la recherche des chaines ou des mots clés...

testé avec :

Next
'Sinon redîmensionner quand besoin est
' ma "chaîne" est en commentaire
ReDim Preserve Inputs(UBound(Inputs) + 1) '# celle-ci "aussi" !
Inputs(UBound(Inputs)) = &O14
Messages postés
160
Date d'inscription
dimanche 7 décembre 2003
Statut
Membre
Dernière intervention
14 janvier 2009

Bonjour Renfield,

je vien de recharger la dernière version de ton prog et je me permets de te signaler un petit bug sur ta coloration ..

cela concerne la gestion des lignes de commentaires
1. lorsque que la ligne de commentaire occupe toute la ligne et contient une chaine entre deux apostrophes, pas de problème tout est bien vert;
2. quand un commentaire est sur la même ligne qu'une instruction et qu'il contient une chaine entre deux apostrophes, cette chaine est considérée comme une chaine normale donc colorée en rouge, malgré qu'elle soit dans un commentaire.

Drissou
Afficher les 34 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.