SyntaxLight

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

SyntaxLight

Message par dayvid »

Salut !

J'ai commencer a bricoller un petit programme de reconnaissance de sintax dans un editor gadget
c'est pas encore vraiment au point mais déjà sa donne une petite idée :)

Voicie le fichier texte a nommer "commandes.txt"

Code : Tout sélectionner

  
  [01 Un éléphant 23456789 - _ [[[]][][[]][][ ]]]	 [ [ [ gris] = {"Une {{}}}{ [[[[[[Simple]]]]]] *{"azs"}* {a} [[[[[[Simple]]]]]] 0.123456789 chaine"} 	 	 	 		 
  
  [Le chien] = {1,50}
  
  [Le chat] = {"Ma variable *{"Eléphant gris"}* = "[Eléphant gris]""}
  
  [La vache] = {"[Eléphant gris], [Le chien]"}
    
Et voicie le programme:

Code : Tout sélectionner

Enumeration
  #Window_0
  #Editor_0
EndEnumeration

#CFM_UNDERLINETYPE = $800000
#CFU_UNDERLINEWAVE = $8
#BlueUnderline = $10
#CyanUnderline = $20
#GreenUnderline = $30
#MagentaUnderline = $40
#RedUnderline = $50
#YellowUnderline = $60
#AquaUnderline = $90
#SeaGreenUnderline = $A0
#MaroonUnderline = $C0

Procedure.s TrimStringPlus(Chaine$, CaractereTrim$, Option)
  
  If option = 1 Or option = 3
    For TrimPlus = 1 To Len(Chaine$)
      
      ChaineCaractere$ = Mid(Chaine$, TrimPlus, 1)
      
      For Index = 1 To CountString(CaractereTrim$, "|")
        VerificationCaractere$ = StringField(CaractereTrim$, Index, "|")
        
        If VerificationCaractere$ = ChaineCaractere$
          Trouver = 1
          Break
        Else
          Trouver = 0
        EndIf
        
      Next
      
      If Trouver = 1
        
      Else
        ResultaTrimPlus$ = Mid(Chaine$, TrimPlus)
        Break
      EndIf
      
    Next
    
  EndIf
  
  If ResultaTrimPlus$ > ""
    Chaine$ = ResultaTrimPlus$
  EndIf
  
  If option = 2 Or option = 3
    
    For TrimPlus = Len(Chaine$) To 1 Step - 1
      
      ChaineCaractere$ = Mid(Chaine$, TrimPlus, 1)
      
      For Index = CountString(CaractereTrim$, "|") To 1 Step - 1
        
        VerificationCaractere$ = StringField(CaractereTrim$, Index, "|")
        
        If VerificationCaractere$ = ChaineCaractere$
          Trouver = 1
          Break
        Else
          Trouver = 0
        EndIf
        
      Next
      
      If Trouver = 1
        
      Else
        ResultaTrimPlus$ = Mid(Chaine$, 1, TrimPlus)
        Break
      EndIf
      
    Next
  EndIf
  
  ProcedureReturn ResultaTrimPlus$
EndProcedure

Procedure Editor_Color(Color.l) 
  format.CHARFORMAT2 
  format\cbSize = SizeOf(CHARFORMAT2) 
  format\dwMask = #CFM_COLOR 
  format\crTextColor = Color
  If IsWindow(Numero_Fenetre_1) And IsGadget(#Editor_0)
    SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
  EndIf
EndProcedure

Procedure Editor_Format(Format)
  format2.CHARFORMAT2  
  format2\cbSize = SizeOf(CHARFORMAT) 
  format2\dwMask = #CFM_ITALIC|#CFM_BOLD|#CFM_STRIKEOUT|#CFM_UNDERLINE 
  format2\dwEffects = Format
  SendMessage_(GadgetID(#Editor_0), #EM_SETCHARFORMAT, #SCF_SELECTION, @format2) 
EndProcedure 

Procedure selection_libre(ligne_de_depart.l, caractere_de_depart.l, ligne_de_fin.l, caractere_de_fin.l)
  If IsGadget(#Editor_0)
    ligne_de_depart - 1
    sel.CHARRANGE 
    sel\cpMin = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_depart, 0) + caractere_de_depart - 1 
    
    If ligne_de_fin = -1 
      ligne_de_fin = SendMessage_(GadgetID(#Editor_0), #EM_GETLINECOUNT, 0, 0) - 1 
    EndIf 
    sel\cpMax = SendMessage_(GadgetID(#Editor_0), #EM_LINEINDEX, ligne_de_fin, 0) 
    
    If caractere_de_fin = -1 
      sel\cpMax + SendMessage_(GadgetID(#Editor_0), #EM_LINELENGTH, sel\cpMax, 0) 
    Else 
      sel\cpMax + caractere_de_fin - 1 
    EndIf 
    SendMessage_(GadgetID(#Editor_0), #EM_HIDESELECTION, #SCF_SELECTION, @sel) 
    SendMessage_(GadgetID(#Editor_0), #EM_EXSETSEL, 0, @sel) 
  EndIf
EndProcedure

Procedure selectionner_caracteres(ligne, position_depart, position_fin)
  selection_libre(ligne, position_depart, ligne - 1, position_fin)
EndProcedure

Procedure.l renvoiller_position_cursseur_Y_console()
  If IsGadget(#Editor_0)
    ; returns Y-Pos of Cursor 
    REG = GadgetID(#Editor_0) 
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
    position_cursseur_Y_console = SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1 
    ProcedureReturn position_cursseur_Y_console
  EndIf
EndProcedure

Procedure.l renvoiller_position_cursseur_X_console()
  If IsGadget(#Editor_0)
    ; returns X-Pos of Cursor 
    REG = GadgetID(#Editor_0) 
    SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE) 
    position_cursseur_X_console = (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
    ProcedureReturn position_cursseur_X_console
  EndIf
EndProcedure

Procedure SyntaxLight(Ligne = 0)
  
  If ligne > 0
    NombreLigne = Ligne
  ElseIf ligne < 0 Or ligne = 0
    NombreLigne = CountGadgetItems(#Editor_0)
  EndIf
  
  For Ligne = Ligne To NombreLigne
    Ligne$ = GetGadgetItemText(#Editor_0, Ligne)
    
    terminer = 0
    Chaine = 0
    Valeur = 0
    Variable = 0
    Erreur = 0
    
    For PositionExtraction = 1 To Len(Ligne$)
      
      selectionner_caracteres(Ligne + 1, PositionExtraction, PositionExtraction + 1)
      
      Caractere$ = Mid(Ligne$, PositionExtraction, 1)
      
      If terminer = 0
        
        If Chaine = 0
          
          If Valeur = 0
            
            If Variable = 0
              
              If Caractere$ = "[" And Erreur = 0
                Editor_Color(RGB(0, 0, 255))
                Editor_Format(#CFM_BOLD)
                Variable = 1
                Erreur = 0
                
              ElseIf Caractere$ = "]"
                Editor_Color(RGB(255, 0, 0))
                Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « dans le nom de la variable a la position " + Str(PositionExtraction) + ", a la ligne " + Str( Ligne)
                Erreur = 1
                
              ElseIf Caractere$ = "{"
                Editor_Color(RGB(0, 0, 255))
                Editor_Format(#CFM_BOLD)
                
                If Mid(Ligne$, PositionExtraction + 1, 1) = Chr(34)
                  Chaine = 1
                Else
                  Valeur = 1
                EndIf
                
              ElseIf Caractere$ = "=" Or Caractere$ = "+" Or Caractere$ = "-" Or Caractere$ = "*" Or Caractere$ = "/" Or Caractere$ = "%"
                Editor_Color(RGB(253, 123, 0))
                Editor_Format(#CFM_BOLD)
                
              ElseIf Caractere$ <> Chr(32)
                Editor_Color(RGB(255, 0, 0))
                Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « a la position " + Str(PositionExtraction - 1)
              EndIf
              
            ElseIf Variable = 1
              
              If Caractere$ = Chr(32) Or Caractere$ = Chr(9) Or Caractere$ = "@" Or Caractere$ = "-" Or Caractere$ = "_" Or Caractere$ = "ô" Or Caractere$ = "ö" Or Caractere$ = "ù" Or Caractere$ = "û" Or Caractere$ = "ü" Or Caractere$ = "ÿ" Or Caractere$ = "ç" Or Caractere$ = "é" Or Caractere$ = "è" Or Caractere$ = "ê" Or Caractere$ = "ë" Or Caractere$ = "à" Or Caractere$ = "ä" Or Caractere$ = "â" Or Caractere$ = "î" Or Caractere$ = "ï" Or Caractere$ = "a" Or Caractere$ = "b" Or Caractere$ = "c" Or Caractere$ = "d" Or Caractere$ = "e" Or Caractere$ = "f" Or Caractere$ = "g" Or Caractere$ = "h" Or Caractere$ = "i" Or Caractere$ = "j" Or Caractere$ = "k" Or Caractere$ = "l" Or Caractere$ = "m" Or Caractere$ = "n" Or Caractere$ = "o" Or Caractere$ = "p" Or Caractere$ = "q" Or Caractere$ = "r" Or Caractere$ = "s" Or Caractere$ = "t" Or Caractere$ = "u" Or Caractere$ = "v" Or Caractere$ = "w" Or Caractere$ = "x" Or Caractere$ = "y" Or Caractere$ = "z" Or Caractere$ = "A" Or Caractere$ = "B" Or Caractere$ = "C" Or Caractere$ = "D" Or Caractere$ = "E" Or Caractere$ = "F" Or Caractere$ = "G" Or Caractere$ = "H" Or Caractere$ = "I" Or Caractere$ = "J" Or Caractere$ = "K" Or Caractere$ = "L" Or Caractere$ = "M" Or Caractere$ = "N" Or Caractere$ = "O" Or Caractere$ = "P" Or Caractere$ = "Q" Or Caractere$ = "R" Or Caractere$ = "S" Or Caractere$ = "T" Or Caractere$ = "U" Or Caractere$ = "V" Or Caractere$ = "W" Or Caractere$ = "X" Or Caractere$ = "Y" Or Caractere$ = "Z"  Or Caractere$ = "0" Or Caractere$ = "1" Or Caractere$ = "2" Or Caractere$ = "3" Or Caractere$ = "4" Or Caractere$ = "5" Or Caractere$ = "6" Or Caractere$ = "7" Or Caractere$ = "8" Or Caractere$ = "9"
                Editor_Color(RGB(136, 58, 119))
              ElseIf Caractere$ = "]"
                Variable = 0
                Editor_Color(RGB(0, 0, 255))
                Editor_Format(#CFM_BOLD)
                
              Else
                Editor_Color(RGB(255, 0, 0))
                Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « dans le nom de la variable a la position " + Str(PositionExtraction) + ", a la ligne " + Str( Ligne)
              EndIf
              
            EndIf
            
          ElseIf Valeur = 1
            If Caractere$ = "0" Or Caractere$ = "1" Or Caractere$ = "2" Or Caractere$ = "3" Or Caractere$ = "4" Or Caractere$ = "5" Or Caractere$ = "6" Or Caractere$ = "7" Or Caractere$ = "8" Or Caractere$ = "9" Or Caractere$ = "." Or Caractere$ = ","
              Editor_Color(RGB(255, 0, 0))
              
            ElseIf Caractere$ = "}"
              Editor_Color(RGB(0, 0, 255))
              Editor_Format(#CFM_BOLD)
              Valeur = 0
              terminer = 1
            Else
              Editor_Color(RGB(255, 0, 0))
              Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « dans la valeur de la variable a la position " + Str(PositionExtraction) + ", a la ligne " + Str( Ligne)
            EndIf
            
          EndIf
          
        ElseIf chaine = 1
          
          If CaractereErreur = 0
            
            If IgniorerCaractere = 0
              
              If Caractere$ <> "}"
                If Caractere$ = "*"
                  
                  If Mid(Ligne$, PositionExtraction + 1, 2) = "{" + Chr(34)
                    
                    If FindString(Ligne$, Chr(34) + "}*", PositionExtraction + 1)
                      IgniorerCaractere = FindString(Ligne$, Chr(34) + "}*", PositionExtraction + 1) - PositionExtraction + 1
                    Else
                      CaractereErreur = 1
                    EndIf
                    
                  ElseIf Mid(Ligne$, PositionExtraction + 1, 2) = "{" + Chr(34)
                    
                    If FindString(Ligne$, Chr(34) + "}*", PositionExtraction + 1)
                      IgniorerCaractere = FindString(Ligne$, Chr(34) + "}*", PositionExtraction + 1) - PositionExtraction + 1
                    Else
                      CaractereErreur = 1
                    EndIf
                    
                  EndIf
                  
                ElseIf Mid(Ligne$, PositionExtraction, 2) = "{" + Chr(34)
                  Editor_Color(RGB(255, 0, 0))
                  terminer = 1
                  Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « dans la valeur de la variable a la position " + Str(PositionExtraction) + ", a la ligne " + Str( Ligne)
                  Continue
                EndIf
                
                Editor_Color(RGB(0, 150, 0))
                
              Else
                If Mid(Ligne$, PositionExtraction - 1, 1) <> Chr(34)
                  If FindString(Ligne$, "}", PositionExtraction + 1)
                    Editor_Color(RGB(0, 150, 0))
                  Else
                    Debug "Erreur de syntax, caractère de fin de chaine manquant » " + Chr(34) + " « a la fin de la chaine de caractère a la position " + Str(PositionExtraction - 1)
                    Editor_Color(RGB(255, 0, 0))
                  EndIf
                Else
                  Editor_Color(RGB(0, 0, 255))
                  Editor_Format(#CFM_BOLD)
                  chaine = 0
                  terminer = 1
                EndIf
                
              EndIf
              
            ElseIf IgniorerCaractere > 0
              Editor_Color(RGB(0, 150, 0))
              IgniorerCaractere - 1
            EndIf
            
          ElseIf CaractereErreur > 0
            Editor_Color(RGB(255, 0, 0))
            CaractereErreur - 1
          EndIf
          
        EndIf
        
      Else
        Editor_Color(RGB(255, 0, 0))
        Debug "Erreur de syntax, caractère invalide » " + Caractere$ + " « a la fin de la ligne " + Str(PositionExtraction - 1)
        
      EndIf
      
      Delay(0)
    Next
    
  Next
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 472, 203, 765, 610, "Editeur",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    EditorGadget(#Editor_0, 5, 5, 755, 600) ; #PB_Editor_ReadOnly
    
    SetGadgetFont(#Editor_0, LoadFont(99, "Cambria", 10))
    
    If ReadFile(1, "Commandes.txt") ; Si le fichier peut être lu , on continue...
      While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
        AddGadgetItem(#Editor_0, -1, TrimStringPlus(ReadString(1), "|" + Chr(32) + "|" + Chr(9) + "|", 3)) ; Affiche ligne par ligne le contenu du fichier
        Ligne + 1
      Wend
      CloseFile(1) ; Ferme le fichier précédemment ouvert
    Else ; Sinon ont affiche un message d'avertissement
      MessageRequester("Information","Impossible d'ouvrir le fichier !")
    EndIf
    
  EndIf
  
  SyntaxLight()
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    
    GadgetID = EventGadget() ; Is it a gadget event?
    
    EventType = EventType() ; The event type
    
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #Editor_0
        
        CodeEditeur$ = GetGadgetText(#Editor_0)
        
        If SauvegardeCodeEditeur$ <> CodeEditeur$
          SauvegardeCodeEditeur$ = CodeEditeur$
          
          SyntaxLight(renvoiller_position_cursseur_Y_console() - 1)
          
        EndIf
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndProcedure

Open_Window_0()

dite-moi ce que vous en pensser et plus si infinité :lol:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: SyntaxLight

Message par jbernard13 »

et il sert a quoi faire ce code ???
Jbernard13
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Oui désoler :oops:

J'ai pas eu envie de m'embeté avec ça, navré :(
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: SyntaxLight

Message par Ar-S »

Je n'ai pas trop compris à quoi il sert non plus..
Par contre, pour tes series de if machin="" OR etc etc
Je te conseils de te pencher sur Select / Case / Endselect

Code : Tout sélectionner

Caractere$ = "@"

Select Caractere$ 
  Case Chr(32),Chr(9),"@","-","_","ô" ;etc etc
    Car$="Trouvé ! c'est : "+Caractere$
EndSelect    
    
Debug Car$
C'est plus propre (et plus court !) que ton

Code : Tout sélectionner

if caractere$= Chr(32) OR caractère$= Chr(9) OR OR OR OR ...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: SyntaxLight

Message par boddhi »

@dayvid
Ar-S a écrit :

Code : Tout sélectionner

Caractere$ = "@"

Select Caractere$ 
  Case Chr(32),Chr(9),"@","-","_","ô" ;etc etc
    Car$="Trouvé ! c'est : "+Caractere$
EndSelect    
   
Debug Car$
Tu peux faire aussi comme cela :

Code : Tout sélectionner

Select Asc(Caractere$)
  Case 9,32,65 To 90,97 To 122,192 To 255, etc...
    ...
EndSelect
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Bonjour touts le monde !

J’ai repris mon exemple de syntaxLigt mais je l’es complétement modifier !
Oui parce que j’ai un truc en tête mais je me demandais si ça n’existais pas déjà voyez-vous !

Bien voilà, je cherche un programme qui va me permettre de colorer du code.
Pour le moment je recherche a colorer du code en Pure Basic

Bien imaginons que j’ai un éditeur de texte, je colle mon code dedans
Puis je demande au programme de me colorer ce code !

C’est pour faire un tutoriel sur Pure Basic car colorer le texte manuellement est bien trop long !
Donc ce logiciel va colorer le code pour moi, j’aurais ensuite plus qu’à copier ce code
et le coller dans un éditeur de texte qui gère la couleur (Word Pad, OpenOffice, Word, etc.)

Mais ce qui serais pas mal non plus, c’est que le logiciel puisse colorer
le code suivent un motif précis (Pure Basic, C, C++, VB, etc.)

J’ai donc commencer ceci, ça fonctionne pas trop mal mais ce n’est qu’un prototype et ya
pas mal de chose qui manque et je ne sais pas si je pourrais faire mieux que ça !

Trouvez-vous ce projet intéressant, utile, faisable ?

Pouriez-vous svp améliorer ce code ?!

http://www.archive-host.com/files/10557 ... _Light.rar
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: SyntaxLight

Message par Ar-S »

boddhi a écrit :
Tu peux faire aussi comme cela :

Code : Tout sélectionner

Select Asc(Caractere$)
  Case 9,32,65 To 90,97 To 122,192 To 255, etc...
    ...
EndSelect
Tout à fait, mais à moins de connaitre la table ascii ou de l'avoir sous les yeux au fur et à mesure qu'on tape son code, cela reste plus "propre" visuellement mais plus long à mettre en oeuvre.

Le bilan de tout ça c'est qu'il y a beaucoup de façon d'atteindre un resultat en PB, mais il faut bien que tu (dayvid) observes lorsque des if elseif sont nécessaires et lorsque des select/case sont plus judicieux.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Oui je vient d'en prendre conscience, c'est bien plus pratique les Select/Case
vous en penssez quoi de ce nouveaux programme ?!

j'aurais bien besoin d'aide SVP :)
merci a tous pour vos conseils

Oui je persiste dans cette voie-ci car sa va être utile je le pense
alors comment proceder, les étapes a réaliser pour faire ceci :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

bon biçn merci beaucoup pour vos réponce, sinon quoi d'autres ? :)

Pour le momment je suis deçus emais je rame :cry:
si je savais au moins comment proceder

Question: comment découper une ligne de code en plusieur fragment
exemple vite fait:

Print ( "blablabla" + str ( abc ) + "blablabla" + asd$ )

Ce qui donnerais un truc du genre:

Print(
"blablabla"
+
str(
abc
)
+
"blablabla"
+
asd$
)

Bon j'éssaye un truc et je vous aporte sa :P
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: SyntaxLight

Message par Le Soldat Inconnu »

Salut,

Je suis en train de refaire mon programme PBSyntax, je le posterais sur le forum, ça devrais pouvoir t'aider.

sinon, regarde ici :
http://www.purebasic.fr/french/viewtopi ... 44#p131944

++
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Ok merci SLI :P

Sinon, elle sert a quoi la Dll SyntaxHilighting.dll ???
Sa pourais m'aider ça ?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: SyntaxLight

Message par Le Soldat Inconnu »

ça sert à faire de la colorisation syntaxique, comme dans l'éditeur. Mettre des mots clé en couleur, en gros
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Salut !

J'ai une très bonne nouvelle a vous annoncer, c'est bon j'ai ce que je veut et j'ai même commencer un programme :D
voici ce que l'on peut pour le moment faire avec:

http://www.archive-host.com/files/10716 ... getpb.html

On ouvre un fichier Pure Basic et ont l'enregistre en HTML :)
j'ai repris et améliorer un code déjà existant dans le SDK de Pure Basic (Syntaxe.....) :P

Sa n'as pas été dur vue que tout à été fait grâce a cette superbe DLL et que y avais un très bon exemple :wink:
Je suis heureux d'avoir en fin pue faire ce que je voulais :D

Mais je ne montre pas de suite le code car je ne l'es pas finie encore, voilà pourquoi :)
Cependant j'ai un pitit problème:

Vous savez le tableau de couleurs en Hexadécimale
il en as 216, le problème est que j'ai essayer de trouvé un moyen pour les classer par ordre "du plus sombre au plus clair" et "par couleurs"
ou par teinte, je ne sais pas le jargon, j'ai essayer sa a la main grâce a paint mais sa a pris du temps
mais ce n'est qu'une image pour vous faire un peut comprendre :wink:

http://www.archive-host.com/files/10716 ... itre_2.png

En faite j'ai extrait toutes les couleurs Hexadécimale dans le fichier d'aide de Pure Basic
puis les est mis dans un fichier texte (une couleur par ligne)

Mais je ne sais pas comment les trier comme je le veut
c'est pour faire un sélecteur de couleur pour choisir les couleurs que l'on veut attribuer au mots clé, fonction, chaine, etc.

Il faut que je les trie comme je vous l'es dit mais je n'y arrive pas
comment on peut faire ça ?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: SyntaxLight

Message par Le Soldat Inconnu »

Pourquoi ne pas récupérer une image montrant une palette d couleur et sans servir pour construire ton sélecteur de couleur. On vient faire des "Point(" Sur l'image pour connaitre la couleur et sa position dans la palette
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: SyntaxLight

Message par dayvid »

Fait :D

Salut les copain !

Je viens vous montrer un peut ou j'en suis avec mon programme SyntaxLight
et je dois dire que j'avance pas trop mal pour le moment, cependant
j'aurais besoin de vos précieux petits conseils pour avancer !

Les menues fonctionnes Sauf « Colorer » du menue droit de l'éditeur de texte
parce que je n'arrive pas a faire ce que je souhaiterais faire !

Le menue Exporter en HTML fonctionne très bien

Tous ce qui concerne les options n'est pas terminer !

-----------------------------------------------------------------------------------------------------------
Ah oui et je rencontre un petit problème avec les couleurs Hexadécimale !
La commande « Val() » ne renvoie pas les bonne couleur une fois convertie en Val()

Exemple: ReplaceString(CouleurSeparateur$, "#", "$"), me renvoie: $0000FF
(dans le fichier « Paramètres SyntaxLight » a la ligne 166)

Ya d'autres exemple dans le genre, regarder la fenêtre d'option à « couleur des mots »
vous verrez que les couleurs ne sont pas les même, ont dirais qu'elle sont inverser !!!

Jusque là pas de problème, mais elle est égale à: RGB(255, 0, 0)
alors que sa devrais plutôt être: RGB(0, 0, 255)
J'ai surement zaper quelque chose !
-----------------------------------------------------------------------------------------------------------

Je voudrait que le programme me colore le texte suivent
les couleurs indiquer par les variables, comment puis-je procéder ?
des idées ?, des exemples ?. SVP

Je voudrait également savoir s'il étais possible de pouvoir
faire en sorte que l'éditeur de texte puisse gérer du code HTML
je veut dire par la « l'afficher », me comprenez-vous ?
Savez-vous comment faire ? SVP

Je voudrait aussi faire une fonction pour que quand il y a du code dans le presse papier
que le programme le détecte et le colore directement comme dans le programme
« Colorer » qui a été crée par Erix14 et Dobro.

Je suis aussi ouvert a toute idée alors n'hésitez pas !

http://www.archive-host.com/files/10802 ... Light_2.7z
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre