Page 8 sur 17
Publié : dim. 06/nov./2005 9:21
par erix14
Voici le code pour que Colorer fasse la différence entre du texte et autres choses :
Case #WM_DRAWCLIPBOARD ;{
If PressePapierPlein = #Vide
PriList = #CF_TEXT
If GetPriorityClipboardFormat_(@PriList, 1) = #CF_TEXT
PressePapierPlein = #Plein
PlaySound (0,0)
InvalidateRect_(WindowID,RectImage1, #True )
EndIf
EndIf ;}
Dobro, ce serait bien si tu changeais de méthode pour trouver les mots, recherche les séparateurs... Car la procédure GetPriorityClipboardFormat est resorti en trois morceaux
Dans les médias il y a un icône que j'ai créée pour Colorer, il suffit de lier cette icône au projet pour qu'il apparaisse dans la barre des tâches

Publié : dim. 06/nov./2005 10:12
par Backup
Dobro, ce serait bien si tu changeais de méthode pour trouver les mots, recherche les séparateurs..
impossible ! car certains ecrivent "ImageID()" d'autres "ImageID ()"
(voir l'espace entre la fonction et les parentheses )
d'autre part dans des cas comme
ya pas d'espace pour les fonctions qui font partie des parametres
comme
bref trop de disparité !!
le probleme que tu souleve est lié a l'emplois de termes existants (fonctions, ordre basic) dans le nom ,d'une variable , ou d'une API
pour les API c'est faisable car les API termine par le charactere "_("
il suffit de faire une recherche de la presence de "_(" pour etre sur qu'on a affaire a une API tout du moins en utilisation normale !
en d'autres termes , colorer pourra toujours se faire pieger
ma methode de recherche est a mon avis la plus efficace pour l'instant !
(mais vous pouvez me demontrer le contraire

)
pour les API je vais rajouter le test ....

Publié : dim. 06/nov./2005 10:56
par Backup
Dobro, ce serait bien si tu changeais de méthode pour trouver les mots, recherche les séparateurs..
je suis peut etre sur une solution !

Publié : dim. 06/nov./2005 11:32
par erix14
C'est pourtant pas bien compliqué
Procedure.b IsSepare(Car.b)
If Car=' ' Or Car=',' Or Car='(' Or Car=')' Or Car='[' Or Car=']' Or Car='\' Or Car='/' Or Car='*' Or Car='=' Or Car='+' Or Car='-' Or Car=9 Or Car=34
ProcedureReturn #True
Endif
ProcedureReturn #False
EndProcedure
Procedure AfficheMot(Mot$)
Mot2$ = UCase (Mot$)
If Mot2$ = "IF"
Debug Mot$+" <- PureBasic "
ElseIf Mid(Mot$, Len (Mot$),1) = "_"
Debug Mot$+" <- API "
Else
Debug Mot$
Endif
EndProcedure
Procedure AfficheLesMots(*ptr.BYTE)
Mot$ = ""
While *ptr\b
If IsSepare(*ptr\b)
If Len (Mot$)
AfficheMot(Mot$)
Endif
Mot$ = ""
Else
Mot$ + Chr (*ptr\b)
Endif
*ptr + 1
Wend
If Len (Mot$)
AfficheMot(Mot$)
Endif
EndProcedure
AfficheLesMots(@"If GetPriorityClipboardFormat_(@PriList, 1) = #CF_TEXT")
Publié : dim. 06/nov./2005 19:59
par Backup
C'est pourtant pas bien compliqué
bien sur ! bien sur !
j'ai passé mon apres midi a chercher un equvalent ,je me suis pris la tete
et au final !! ......... rien, nada , von je vais me ranger a ta science, en utilisant le code Parfait , que tu nous a genereusement offert, dans ta grande bontée ; je me prosterne bien bas , je t'en veux un peut
car tu ma fait comprendre que la prog c'est pas mon truc ...
mon truc , c'est rien faire ! ... (et encore ça emmerde mes voisins )
bon a moins que tu ne l'ai deja fait , je vais donc inserer ton code Merci encore. ...
putain l'autre il utilise les pointeurs et tout et tout .. pfff j'y comprend rien a son code en plus , y m'enerve ! y m'enerve ! y m'enerve !!
Publié : dim. 06/nov./2005 20:25
par comtois
putain l'autre il utilise les pointeurs et tout et tout .. pfff j'y comprend rien a son code en plus , y m'enerve ! y m'enerve ! y m'enerve !!
Tiens , si tu veux remplacer le pointeur , tu peux faire comme ça .
Code : Tout sélectionner
Procedure.b IsSepare(Car.s)
If Car=" " Or Car="," Or Car="(" Or Car=")" Or Car="[" Or Car="]" Or Car="\" Or Car="/" Or Car="*" Or Car="=" Or Car="+" Or Car="-" Or Car=Chr(9) Or Car=Chr(34)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure AfficheMot(Mot$)
Mot2$ = UCase (Mot$)
If Mot2$ = "IF"
Debug Mot$+" <- PureBasic "
ElseIf Right(Mot$,1) = "_"
Debug Mot$+" <- API "
Else
Debug Mot$
EndIf
EndProcedure
Procedure AfficheLesMots(Ligne$)
Mot$ = ""
a=1
Car$=Mid(Ligne$,a,1)
While Car$
Car$=Mid(Ligne$,a,1)
If IsSepare(Car$)
If Len (Mot$)
AfficheMot(Mot$)
EndIf
Mot$ = ""
Else
Mot$ + Car$
EndIf
a + 1
Wend
If Len (Mot$)
AfficheMot(Mot$)
EndIf
EndProcedure
AfficheLesMots("If GetPriorityClipboardFormat_(@PriList, 1) = #CF_TEXT")
Publié : dim. 06/nov./2005 21:11
par erix14
je vais me ranger a ta science, en utilisant le code Parfait , que tu nous a genereusement offert
En fait, ce n'est pas le code parfait... J'utilise un autre algorithme + une optimisation en assembleur dans VisuelPureBasic.
Et désolé, je ne savais pas que tu avais des problèmes avec les pointeurs.

Publié : dim. 06/nov./2005 23:23
par Backup
Et désolé, je ne savais pas que tu avais des problèmes avec les pointeurs
pas specialement , c'est vrais que je les utilises peut !!
j'ai souvenance d'une instruction basic ,"Varptr()" , il me semble que les pointeurs c'est la meme chose !
ma phrase ecrite en tout petit, etait humouristique ... hum !
(j'vais pas avouer que je suis un gros nul quand meme )
Merci Comtois , je prends aussi ta modif !

Publié : lun. 07/nov./2005 12:47
par Backup
bon j'ai quasi fini , mais je le garde encore un peut pour les tests
ça a été pas mal remanié, mais ça a l'air de vouloir tenir la route cet fois
le resultat pour bientot :
voici un petit appercu :
Procedure.b IsSepare(Car.s)
If Car= " " Or Car= " , " Or Car= " ( " Or Car= " ) " Or Car= " [ " Or Car= " ] " Or Car= " \ " Or Car= " / " Or Car= " * " Or Car= " = " Or Car= " + " Or Car= " - " Or Car= Chr (9) Or Car= Chr (34)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure AfficheMot(mot$)
Mot2$= UCase (mot$)
If Mot2$= "IF"
Debug mot$+ " <- PureBasic "
ElseIf Right (mot$,1)= "_"
Debug mot$+ " <- API "
Else
Debug mot$
EndIf
EndProcedure
Procedure AfficheLesMots(ligne$)
mot$= ""
a=1
car$= Mid (ligne$,a,1)
While car$
car$= Mid (ligne$,a,1)
If IsSepare(car$)
If Len (mot$)
AfficheMot(mot$)
EndIf
mot$= ""
Else
mot$ + car$
EndIf
a + 1
Wend
If Len (mot$)
AfficheMot(mot$)
EndIf
EndProcedure
AfficheLesMots( "If GetPriorityClipboardFormat_(@PriList, 1)= #CF_TEXT" )
Publié : lun. 07/nov./2005 13:40
par lionel_om
Euh...
Faudrait que ta liste des fonctions s'agrandisse quand tu trouve une déclaration de fonction.
Exemple : IsSepare() et AfficheMot() ne sont pas colorés ...

Publié : lun. 07/nov./2005 14:59
par Progi1984
mot$ pourrait etre colorié, cad les variables de chaines
Publié : lun. 07/nov./2005 16:32
par Backup
vu comme c'est concu maintenant on pourrra faire ce que l'on veux
juste 2 problems vont se poser
1 plus on ajoute de couleurs diferente, plus la taille des codes augmente serieusement , or on est limité par la taille des message sur le forum !
2 les couleurs pour diferencier sont aproximativement choisie pour "passer" sur la majorité des themes !
or certains themes ont un fond bleu sombre et d'autre un fond clair
pour passer sur tout les themes, faut aprocher le "gris" dans toutes les couleur proposé(un rouge avec des valeur aprochant le milieu de la gamme)
bref c'est deja pas evident avec 5 couleur employé actuellement
rajouter des termes avec des couleurs differentes de celle que nous avons , et qui soient compatible avec les themes du Forum, tu vas vite te rendre compte , qu'on a plus beaucoup de choix !!
ou alors faudrai que tout le monde passe sur le theme par defaut (fond clair) , seulement les gouts et les couleurs !

Publié : jeu. 10/nov./2005 6:35
par Anonyme2
il y a une exe dispo à jour ?
Publié : jeu. 10/nov./2005 14:45
par Backup
un petit bug a corriger et c'est bon !

Publié : jeu. 10/nov./2005 20:32
par Backup
bon excusez du retard , j'ai passé beaucoup de temps sur Ma Moto, alez-retour a Annecy, chez Kawa pour la revision
accompagné de ma petite amie, qui faisai ses premier tour de roue, avec son permis tout neuf

on a tout eu , Froid, Vent (tres fort) , une panne sous le premier tunel d'annecy , le plus sombre , en pleine heure de pointe les poumons en feu, bref , galere mais quel pied !
pour en revenir au prg , j'ai tout refais , reste a voir si les APIs fonctionent
c'est la seul chose que j'ai pas regardé !
voici un exemple de ce que ça donne :