COLORISATION SYNTAXIQUE DE CODE VB6 (HTML)

violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 12 févr. 2007 à 19:37
lchanson1 Messages postés 10 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 3 mai 2011 - 2 mai 2011 à 12:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41453-colorisation-syntaxique-de-code-vb6-html

lchanson1 Messages postés 10 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 3 mai 2011
2 mai 2011 à 12:40
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juin 2008 à 07:03
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
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
22 juin 2008 à 12:42
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.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 mai 2007 à 10:11
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
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
7 mai 2007 à 09:11
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
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
5 mai 2007 à 23:25
Effectivement, il apparait maintenant ?

Bizarre... C'était pas un zip vide, c'était toute la section "Fichier Zip" (avec le bouton 'Télécharger') qui était absente...

@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 mai 2007 à 23:24
le zip m'apparait bien (soucis de cache ?)
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
5 mai 2007 à 21:26
Salut, le *.zip a disparu ?
Sinon, c'était pour dire qu'il manque dans la liste des commandes le mot BF (utilisé pour Line, pour dessiner un rectangle plein).

@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 avril 2007 à 10:34
étrange...

il semble ne pas vouloir du WebBrowser.

tentes de supprimer le controle, la reference etc
et de remettre un WebBrowser tout neuf (même nom^^)
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
18 avril 2007 à 15:06
ReBonjour rendfiel, ajout aus essais décrit ci-dessus
J'ai constaté que dans ta source il y a la dll
Ieframe.dll 7.00.5346.5
type de fichier= (winmain(wmbla).060413-2150)
Comme il ne correspond pas à celui qui est dans system32, j'ai enlevé la dll de systeme32, (mis dans un répertoir autre)
j'ai copier ta dll dans systeme32...

et j'ai alors pout ta dll Version 7.0.6000.16414
type de # (vista_gdr.070108-1520) ???????

Voila une petite précision complémentaire.
louis
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
18 avril 2007 à 14:18
Bonjour renfield
j'ai chargé le zip, mais lorsque je tente de le compilé je recois la même erreur que turnoff, a part
c:/windows\system32\ieframe.dll \1
et ensuite toute les mêmes erreurs dans le #.log
J'ai suivi tout ce qui est dit dans les postes précédant a savoir
J'ai charger le SP6 'comme cela je l'aurais
dans le répertoir systeme32 j'ai IEFrame.dll version 7.0.5730.11 du 17/02/2007(probablement installer lors d'une mise à jour de windows.)
dans un rép window différent j'ai une version 7.0600.16414 du 7/11/2006
j'ai également 5 # différents pour SHdocvw.dll ,3 versions et 5 fichiers avec références différentes.
Après tout cela j'ai regardé pour éventuellement ajouter dans VB6 la référence à ccwweb, mais je n'ai trouvé que ccwwebwnd 1,0 library
Vérais-tu une opération que j'aurais oublié, ou mal interprété ?
Merci d'avance
louis
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
1 mars 2007 à 21:02
J'essaierai effectivement de te solliciter si tu es là demain aprem où ce WE, surtout sur le fonctionnement du buffer ;)

Merci à toi
(là c'est détente une petite heure et après dodo, demain debout 5h)
Bonne soirée, je te contact
++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 mars 2007 à 20:51
Ravi que ca te plaise...

la structure du code a évolué peu à peu, eliminant les zones trop lentes, et j'ai essayé d'améliorer la chose...

je dit pas que c'etait indispensable, mais je voulais vraiment que cette source tourne rapidement, juste avec du VB...(ou avec peu d'API)

si tu souhiate des eclaicissements sur certains points, je sui là ^^
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
1 mars 2007 à 18:57
Salut Rey,

que dire, tout d'abord, j'ai testé le temps d'exécution en comparant avec celle faite avec Pcpt, et je rejoins Violent_Ken concernant la rapidité, c'est excellent.
Il est vrai que c'est pas mal aussi de pouvoir choisir le fichier.
Ton code est clair et agréable à lire, tu as une façon de coder très performante.

Ton projet me servira également de tuto ;)

Bonne prog et @++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 févr. 2007 à 12:41
Content que cela fonctionne également (enfin?) chez toi...

dans l'histoire, tu aura gagné le SP6 de VB, ce qui est une bonne chose ^^

bon courage pour ce projet qui a l'air d'envergure !
Turnoff Messages postés 14 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 17 avril 2007
23 févr. 2007 à 11:45
Renfield.
Merci pour les cours particuliers. Il me faudrait bien un "Renfield" souvent derrière moi...
Alors sitôt lu sitôt fait. En faisant la permutation du contrôle sur le portable, il est aussi content que moi et fonctionne parfaitement!
En vérifiant sur la version XPfamilial du "Desktop" ce "controls" était d'office à la bonne valeur!
cad :shdocvw.dll...
Je n'ose pas descendre d'un cran et lui imposer ieframe.dll. Step+ by Step+.
Je retourne à mon besoin: dialogue Modbus avec mesure électriques pour transformer un PC en centrale d'acquisition pour traitement final sur Matlab. Acquisition mesures; éolienne sur réseau...
Respect et Remerciement...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2007 à 23:05
pas de setup ici.

les modifications sont à apporter dans la fenetre
Projet > Composants (Ctrl+T)

'Microsoft Internet Controls' requiert, normallement ieframe.dll

chez moi j'ai IE7, point de soucis pourtant, je trouve cela très étrange
Turnoff Messages postés 14 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 17 avril 2007
22 févr. 2007 à 22:46
Renfield merci
1) pour la procédure, c'est parfait pour l'économie d'encre.

2)Pour le WebBrowser, ça me console un peu de n'être pas le seul.
Petit hic, sur le portable avec XPpro J'ai Ie7 Vers 7.0.5730.11 là j'ai le Pb, mais sur le 'desktop avec XPfamilial avec lequel cela marche j'ai le mêmeIE7!!
Sinon j'ai consulté le forum, ils disent un peu tous:
"J'ai tout simplement enlevé la réference ieframe.dll de mon projet de setup et là tout fonctionne..." ou que c'est t'y le "projet de setup"? dans vb6?
Dans ton code je ne l'y voit pas.
Tu me proposes de faire l'échange des références mais ou? dans quoi ?

Merci pour le dévouement à la cause...et patience.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2007 à 16:37
pour l'impression, je te suggère de remplacer la procédure ColorizeFile de la Form1, et mettre :

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

moSyntax.HTML_Header = "" & vsFilePath & "<hr/>"
moSyntax.HTML_Footer = vbNullString

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


pour ton webBrowser, je me demande si tu n'aurais pas installé la version Beta de IE7, par le passé ...
tentes de faire l'echange des references
"C:\WINDOWS\system32\ieframe.dll" > "C:\WINDOWS\system32\shdocvw.dll"
(source http://www.developpez.net/forums/showthread.php?t=231644)
Turnoff Messages postés 14 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 17 avril 2007
22 févr. 2007 à 16:01
Tout me semble étrange...
Je débute en VB et je voulais pouvoir imprimer les sources que j'ai chargé pour les modifier. Et plus je vais plus je m'éloigne de mon problème. Bon après MAJ SP6, depuis mon portable et XPpro Vers 5.1 SP2 "Pas d'accès à ieframe.dll"désactivé AV norton et Ad-watch Idem...
Sur un autre poste XP familial Vers 5.1 SP2,ça tourne? avec AV et Ad-watch?
? mon portable serait infectés?
Mais le fond est grisé ce qui est très joli à l'écran, mais puisque j'imprime j'y laisse pas mald'encre! Serais-ce beaucoup demander de savoir quelle(s) ligne(s) je doit mosifier pour avoir un fond "blanc" et le code SVP
Merci, code rapide et très utile...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2007 à 07:39
étrange

installes le SP6 de VB6, ca ne fais jamais de mal....

http://www.microsoft.com/downloads/details.aspx?familyid=83BF08E6-012D-4DB2-8109-20C8D7D5C1FC&displaylang=fr

j'ai IE7 a la maison, IE6 au boulot, j'ai rien a faire, les deux fonctionnent nikel et direct aux eux endroits
Turnoff Messages postés 14 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 17 avril 2007
21 févr. 2007 à 17:14
Bonjour Renfield...
J'ai téléchargé le zip hier et à l'instant la version remaniée...
Lorsque j'ouvre le projet depuis VB6pro version 8176(1998); j'obtiens le message d'erreur me demandant si je doit poursuivre l'ouverture car le fichier c:/windows\system32\ieframe.dll n'a pu être trouvé!
Ce fichier existe bien; (IE7 version 7.0);il fait 5913Ko date:12/01/2007...?
J'ai essayé aussi en désactivant ,AV (Norton) et Ad-Watch. Quand j'essaie le "Run" voici le fichier de log obtenu à la compilation,FrmMain.log:
Line 22: Class SHDocVwCtl.WebBrowser of control CcWeb was not a loaded control class.
Line 28: The property name ExtentX in CcWeb is invalid.
Line 29: The property name ExtentY in CcWeb is invalid.
Line 30: The property name ViewMode in CcWeb is invalid.
Line 31: The property name Offline in CcWeb is invalid.
Line 32: The property name Silent in CcWeb is invalid.
Line 33: The property name RegisterAsBrowser in CcWeb is invalid.
Line 34: The property name RegisterAsDropTarget in CcWeb is invalid.
Line 35: The property name AutoArrange in CcWeb is invalid.
Line 36: The property name NoClientEdge in CcWeb is invalid.
Line 37: The property name AlignLeft in CcWeb is invalid.
Line 38: The property name NoWebView in CcWeb is invalid.
Line 39: The property name HideFileNames in CcWeb is invalid.
Line 40: The property name SingleClick in CcWeb is invalid.
Line 41: The property name SingleSelection in CcWeb is invalid.
Line 42: The property name NoFolders in CcWeb is invalid.
Line 43: The property name Transparent in CcWeb is invalid.
Line 44: The property name ViewID in CcWeb is invalid.
Line 45: The property name Location in CcWeb is invalid.
**********

Bon il ne trouve pas IE7.0 c'est ça?
Il y a t'il une autre solution ?,merci et bravo .
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 févr. 2007 à 15:32
MISE A JOUR IMPORTANTE EFFECTUEE

code remanié
les nombres sont coloriés
les labels aussi
possibilité d'utiliser une liste de mots clé perso
les procédures sont séparées

NB. supprimez vos fichier keywords.txt, en cas de mise a jour (quelques retardataires ont fait leur apparition)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 févr. 2007 à 11:21
merci tout le monde ^^

énième mise a jour...
les mots clés sont dans un fichier externe
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
13 févr. 2007 à 18:55
Super Renfield, je vais l'incorporer à mon éditeur de texte.
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 févr. 2007 à 13:48
J'ai retrouvé le mystérieux opérateur : "Neg" ;)

Et désolé pour les trois posts à la suite...
@+
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 févr. 2007 à 13:47
Et il manque aussi le mot clé "Local" ^^
(on local error...

@+
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 févr. 2007 à 13:24
Je vais regarder l'addin de ce pas ;)
@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2007 à 11:27
certes... m'enfin, la FrmMain n'est qu'une basique illustration du fonctionnement de la colorisation...

mais il est vrai que l'on pourrait avoir une sorte de visionneur de sources
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
13 févr. 2007 à 10:09
Excellent... commme souvent !
Par contre, un menu d'export serait fonctionnellement préférable au presse papiers.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 févr. 2007 à 09:44
Merci Drissou ^^

ken> je suis nul, j'ai oublié de mettre 'Stop' tu me l'avais donné sur un plateau, pourtant :S j'uploaderais a l'occasion

J'ai pu déposer mon Addin : http://www.vbfrance.com/code.aspx?ID=41455

il permet de coloriser a la volée ce que vous copiez/coupez depuis l'IDE de VB6...
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
13 févr. 2007 à 09:01
Super Renfield !
comme d'habitude efficace..

Drissou
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 févr. 2007 à 22:17
ravi que la vitesse te convienne (ca semble etre le cas ^^)

oui, je me souviens d'un opérateur logique (étrange), mais me rappelle plus ^^

merci d'avoir autant complété la liste :p

j'ai un code pret a poster (sauf qu'une fois compilé, ca pose des soucis :S) qui devrait te plaire, violent_ken

(nb: Global est à oublier... Public est là)
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
12 févr. 2007 à 19:37
La vitesse est impressionante...

Sinon, pour compléter la liste des mots-clé, il me semble qu'il manque :

Like
Is
AddressOf
WithEvents
Global
RSet
Step
Stop
TypeOf

et un opérateur logique encore moins répandu que Like et donc je me rappelle plus le nom (p'tet que çà commence par un N...?)

@+ et super code... je garde pour poster des msg dans le forum ;)
Rejoignez-nous