the colorer

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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 :cry:

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 :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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

Code : Tout sélectionner

hBKBrush = CreatePatternBrush_(ImageID())
ya pas d'espace pour les fonctions qui font partie des parametres
comme

Code : Tout sélectionner

StartDrawing(SpriteOutput(sprite) ) 
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 :D

ma methode de recherche est a mon avis la plus efficace pour l'instant !
(mais vous pouvez me demontrer le contraire :D)

pour les API je vais rajouter le test .... :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

C'est pourtant pas bien compliqué :D

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")
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 !! :mad:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 !! :mad:

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")
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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. :D
Et désolé, je ne savais pas que tu avais des problèmes avec les pointeurs. :oops:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D

ma phrase ecrite en tout petit, etait humouristique ... hum !


(j'vais pas avouer que je suis un gros nul quand meme ) :lol:

Merci Comtois , je prends aussi ta modif ! :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :lol:

le resultat pour bientot : :D

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" )
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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 ... :?
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

mot$ pourrait etre colorié, cad les variables de chaines
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

vu comme c'est concu maintenant on pourrra faire ce que l'on veux :D

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 ! :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

il y a une exe dispo à jour ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

un petit bug a corriger et c'est bon ! :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :D
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 ! :lol:

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é ! :D

voici un exemple de ce que ça donne :
Dernière modification par Backup le mar. 27/déc./2005 14:31, modifié 1 fois.
Répondre