PureBasic

Forums PureBasic
Nous sommes le Mar 21/Mai/2013 10:40

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 55 messages ]  Aller à la page 1, 2, 3, 4  Suivante
Auteur Message
 Sujet du message: PBSyntax - Mise en forme du code
MessagePosté: Sam 19/Sep/2009 14:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
Salut,

Je viens de mettre à jour mon petit outil pour mettre en forme le code. Vous le trouverez sur mon site http://www.lsi-dev.com

Pour ceux qui ne connaissent pas, ce petit outil remet propre un code au niveau de l'indentation et des espaces.

Par exemple
Code:
;Calcul
X=4+Y*2
If Truc>=X
X-            Machin
EndIf


devient

Code:
; Calcul
X = 4 + Y * 2
If Truc >= X
  X - Machin
EndIf


++

------------------
Dernière version du programme ici :
http://www.lsi-dev.com/index.php?mod=do ... rid&id=163

Image

Code source :
http://partage.lsi-dev.com/PB/PBSyntax%20-%20Code.zip

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Sam 19/Sep/2009 18:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 22/Jan/2004 14:31
Messages: 3311
J'ai longtemps utilisé ton prog mais ça coinçait et ça n'évoluait pas comme j'en avais besoin, je me suis tourné vers l'excellent outils codecaddy de blueznl, que j'ai paramétré aux petits oignons, il est parfait (pour formater le code) pour mon besoin et en plus il fait des sauvegardes automatiques qui m'ont déjà bien aidées :roll:

Ne m'en veux pas :D

_________________
Documentation GDI + 1.0 PB 4.30 beta 4 et supérieur
PureIconManager


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Sam 19/Sep/2009 23:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2117
Localisation: . <------ ici
Ah ouai c'est bon sa mer i soldat il est trop bien cet utilitaire





@++

_________________
Windows 8 x64, processeur core i7 2.93ghz, mémoire ram 10Go, 2x ati radeon hd 5750 1Go chacune
PureBasic 5.11 x86 & x64 DirectX 11


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Dim 20/Sep/2009 16:04 
Hors ligne

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2309
Plutôt cool, merci soldat.

Ce serait par contre plus productif si c'était interfaçable avec les commandes des outils de l'IDE.
Il faut 'juste' un mode invisible avec lecture de la ligne de commande.

Pour traiter le fichier ouvert dans l'IDE :
pbsyntax.exe FILE="%FILE" TEMPFILE="%TEMPFILE"


ou encore,

Pour traiter la sélection du source dans l'IDE
pbsyntax.exe SELECTION=%SELECTION

%SELECTION --> LINESTARTxCOLUMNSTARTxLINEENDxCOLUMNEND --> Ex: 15x1x18x5


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Dim 20/Sep/2009 18:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
Ça marche très bien en le mettant en outils dans PureBasic ou jaPBe mais uniquement avec %FILE

uniquement sur une sélection, ça doit pouvoir ce faire, mais, la j'ai pas envie, j'ai passer pas mal de temps sur des bidouilles, j'aimerai reprendre mon projet principal du moment :)

Donc je verrais plus tard

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Dim 31/Jan/2010 22:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
Mise à jour du programme.

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Mer 15/Juin/2011 23:59 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
Je suis en train de le refaire complètement.

J'ai plusieurs bug assez complexe et le meilleur moyen de les résoudre, c'est de repartir de zéro. Cette version est trop complexe, on dois pouvoir faire plus simple.

Donc voici le code de l'ancienne version, si ça vous intéresse. Il faut télécharger le programme sur mon site pour avoir les fichiers nécessaire à la compilation du code.

Code:
;- Fichier
#fichier0 = 0
#fichier1 = 1
#fichier2 = 2
Global adresse$, Tab.l, Tab_Reelle.l, Onglet.l, txt$, language.s, PbTab.l, PbLanguage.l, PbPref.s, FichierBak

#NbTxt = 35
Global Dim Txt.s(#NbTxt)
Global Dim liste_langue.s(20)

;- Liste des mots clés
Global Dim Mot_D.s(1000)
Global Dim Tab_D.l(1000)
Global Dim Mot_G.s(1000)
Global Dim Tab_G.l(1000)
Global Nb_Mot_D, Nb_Mot_G

;- Recents
Global Dim recent.s(4, 2)

;- Window Constants
#Window_principale = 0
#Window_aide = 1
#Window_langue = 2

;- MenuBar Constants
#Menu_bar_0 = 0
#Ouvrir = 1
#Recent1 = 2
#Recent2 = 3
#Recent3 = 4
#Recent4 = 5
#Concepteur = 6
#MENU_Langue = 8
#Ouvrir_dossier = 9

;- Gadget Constants
#Progression = 0
#Progression_Texte = 1
#Gadget_2 = 2
#Fichier_Frame = 3
#Fichier_Texte = 4
#DossierDemarrage_Texte = 5
#DossierDemarrage_Choisir = 6
#DossierDemarrage = 7
#Panel = 8
#Gadget_9 = 9
#Gadget_10 = 10
#Gadget_11 = 11
#Gadget_13 = 12
#Gadget_12 = 13
#Gadget_14 = 14
#Gadget_15 = 15
#Pref_Tab_Texte = 16
#Pref_Tab = 17
#PrefPB_Texte = 18
#PrefPB_Langue = 19
#PrefPB_Tab = 20
#Fichier_BAK = 21
#Langue = 22
#Pref_Tab_VraiTabulation = 23

Procedure ActiveOption()
   DisableMenuItem(#Menu_bar_0, #MENU_Langue, PbLanguage)
   DisableGadget(#Pref_Tab_Texte, PbTab)
   DisableGadget(#Pref_Tab, PbTab)
   DisableGadget(#Pref_Tab_VraiTabulation, PbTab)
   If GetGadgetState(#Panel) = 1
      SetGadgetState(#Panel, 1)
   EndIf
EndProcedure

Procedure Open_Window()
   #Fenetre_H = 180
   #Fenetre_L = 300
   #Fenetre_B = 4
   If OpenWindow(#Window_principale, 0, 0, #Fenetre_L, #Fenetre_H, "PBSyntax", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
      StickyWindow(#Window_principale, 1)
      DragAcceptFiles_(WindowID(#Window_principale), #True)
      
      If CreateMenu(#Menu_bar_0, WindowID(#Window_principale))
         MenuTitle(Txt(14))
         MenuItem(#Ouvrir, Txt(15))
         MenuItem(#Ouvrir_dossier, Txt(17))
         MenuBar()
         OpenSubMenu(Txt(16))
            MenuItem(#Recent1, "1 " + recent(1, 1))
            MenuItem(#Recent2, "2 " + recent(2, 1))
            MenuItem(#Recent3, "3 " + recent(3, 1))
            MenuItem(#Recent4, "4 " + recent(4, 1))
         CloseSubMenu()
         MenuTitle("?")
         MenuItem(#Concepteur, Txt(18))
         MenuBar()
         MenuItem(#MENU_Langue, "Select language...")
      EndIf
      
      
      ;- Panel
      PanelGadget(#Panel, 0, 0, #Fenetre_L, #Fenetre_H - MenuHeight())
         
         AddGadgetItem(#Panel, -1, Txt(19))
         
         x = #Fenetre_B
         y = #Fenetre_B
         Largeur = GetGadgetAttribute(#Panel, #PB_Panel_ItemWidth) - 2 * #Fenetre_B
         
         Frame3DGadget(#Fichier_Frame, x, y, Largeur - 48, 48, Txt(14))
         ButtonGadget(#Gadget_2, x + Largeur - 48, y, 48, 48, Txt(15))
         y + 16
         TextGadget(#Fichier_Texte, x + 16, y, Largeur - 48 - 16 * 2, 16, "", #PB_Text_Center)
         y + 32 + 16
         TextGadget(#Progression_Texte, x, y, Largeur, 16, "", #PB_Text_Center)
         y + 16
         ProgressBarGadget(#Progression, x, y, Largeur, 24, 0, 100)
         y + 24 + 4
         CheckBoxGadget(#Fichier_BAK, x, y, Largeur, 16, Txt(34))
         SetGadgetState(#Fichier_BAK, FichierBak)
         
         
         ; Options
         AddGadgetItem(#Panel, -1, Txt(20))
         
         x = #Fenetre_B
         y = #Fenetre_B
         Largeur = GetGadgetAttribute(#Panel, #PB_Panel_ItemWidth) - 2 * #Fenetre_B
         
         TextGadget(#DossierDemarrage_Texte, x, y, Largeur, 16, Txt(21))
         y + 16
         StringGadget(#DossierDemarrage, x, y, Largeur - 48, 24, adresse$)
         ButtonGadget(#DossierDemarrage_Choisir, x + Largeur - 48, y, 48, 24, "...")
         y + 24 + 8
         
         TextGadget(#PrefPB_Texte, x, y, Largeur, 16, Txt(23))
         y + 16
         CheckBoxGadget(#PrefPB_Langue, x, y, Largeur / 2, 16, Txt(24))
         SetGadgetState(#PrefPB_Langue, PbLanguage)
         CheckBoxGadget(#PrefPB_Tab, x + Largeur / 2, y, Largeur / 2, 16, Txt(25))
         SetGadgetState(#PrefPB_Tab, PbTab)
         y + 16 + 8
         TextGadget(#Pref_Tab_Texte, x, y, Largeur, 16, Txt(22))
         y + 16
         SpinGadget(#Pref_Tab, x, y, 48, 24, 0, 10)
         SetGadgetState(#Pref_Tab, Tab)
         SetGadgetText(#Pref_Tab, Str(Tab))
         CheckBoxGadget(#Pref_Tab_VraiTabulation, x + Largeur / 2, y, Largeur / 2, 24, Txt(35))
         SetGadgetState(#Pref_Tab_VraiTabulation, Tab_Reelle)
         
         
      CloseGadgetList()
      
      SetGadgetState(#Panel, Onglet)
      
      ActiveOption()
      
   EndIf
EndProcedure

Procedure Texte(Ligne.s, Index.l)
   Mot.s = ""
   For n = 1 To Index - 1
      Mot = Mot + StringField(Ligne, n, " ") + " "
   Next
   Ligne = Mot + StringField(StringField(StringField(Ligne, Index, " "), 1, "("), 1, ".")
   
   n = 0
   NbEspace = 0
   Texte = 0
   Repeat
      n + 1
      Carac.s = Mid(Ligne, n, 1)
      If Carac = " "
         NbEspace + 1
      ElseIf Carac = Chr(34)
         Texte = 1 - Texte
      EndIf
   Until n > Len(Ligne)
   ProcedureReturn Texte
EndProcedure

Procedure Analyse(Fichier.s)
   Protected Gauche.s, Droite.s, Caractere.s, Extension.s
   
   Extension = LCase (GetExtensionPart(Fichier))
   If Extension = "pb" Or Extension = "pbi" Or Extension = "pbfl"
      If FichierBak
         CopyFile(Fichier, Fichier + ".bak")
      EndIf
      If RenameFile(Fichier, Fichier + ".pbsyntax")
         
         SetGadgetText(#Fichier_Texte, GetFilePart(Fichier))
         
         If OpenFile(#fichier1, Fichier)
            If ReadFile(#fichier0, Fichier + ".pbsyntax")
               
               ;- phase 1
               Taille = FileSize(Fichier + ".pbsyntax")
               SetGadgetText(#Progression_Texte, Txt(27) + "1 / 2")
               
               Repeat
                  
                  Ligne.s = ReadString(#fichier0)
                  Ligne = ReplaceString(Ligne, Chr(9), " ")
                  Ligne = Trim(Ligne)
                  
                  p = 0
                  Repeat
                     p = p + 1
                     Longueur = Len(Ligne)
                     Caractere = Mid(Ligne, p, 1)
                     Gauche = Trim(Left(Ligne, p - 1))
                     Droite = Trim(Right(Ligne, Longueur - p))
                     
                     If Caractere = " " ; On élémine tous les espaces doubles
                        Ligne = Gauche + Caractere + Droite
                     ElseIf Caractere = "("
                        CP1.s = Right(Gauche, 1)
                        CP2.s = Right(Gauche, 2)
                        CP3.s = Right(Gauche, 3)
                        CP4.s = Right(Gauche, 4)
                        CP5.s = Right(Gauche, 5)
                        CP6.s = Right(Gauche, 6)
                        CP7.s = Right(Gauche, 7)
                        CP16.s = Right(Gauche, 16)
                        If CP1 = "+" Or CP1 = "-" Or CP1 = "*" Or CP1 = "/" Or CP1 = "," Or CP1 = "=" Or CP1 = "&" Or CP7 = " Select" Or CP5 = " Case" Or CP3 = " If" Or CP3 = " Or" Or CP4 = " And" Or CP4 = " Not" Or CP4 = " Xor" Or CP6 = " Debug" Or CP3 = " To" Or CP5 = " Step" Or CP6 = " Until" Or CP6 = " While" Or CP7 = " ElseIf" Or CP16 = " ProcedureReturn"
                           Ligne = Gauche + " " + Caractere + Droite
                        Else
                           Ligne = Gauche + Caractere + Droite
                        EndIf
                     ElseIf Caractere = ")"
                        Ligne = Gauche + Caractere + " " + Droite
                     ElseIf Caractere = "\"
                        Ligne = Gauche + Caractere + Droite
                     ElseIf Caractere = "|" Or Caractere = "!" Or Caractere = "&"
                        Ligne = Gauche + " " + Caractere + " " + Droite
                        
                     ElseIf Caractere = ":"
                        If Droite <> ""
                           Ligne = Gauche + " " + Caractere + " " + Droite
                        Else
                           Ligne = Gauche + Caractere + Droite
                        EndIf
                        
                     ElseIf Caractere = "~" Or Caractere = "@" Or Caractere = "%"
                        CP1.s = Right(Gauche, 1)
                        If CP1 = "(" Or CP1 = "["
                           Ligne = Gauche + Caractere + Droite
                        Else
                           Ligne = Gauche + " " + Caractere + Droite
                        EndIf
                        
                     ElseIf Caractere = "+" Or Caractere = "/" Or Caractere = "*" Or Caractere = "-"
                        CP1.s = Right(Gauche, 1)
                        CP2.s = Right(Gauche, 2)
                        CP3.s = Right(Gauche, 3)
                        CP4.s = Right(Gauche, 4)
                        CP5.s = Right(Gauche, 5)
                        CP6.s = Right(Gauche, 6)
                        CP9.s = Right(Gauche, 9)
                        CP15.s = Right(Gauche, 15)
                        If CP1 = "," Or CP1 = "=" Or CP1 = ">" Or CP1 = "<" Or CP1 = "+" Or CP1 = "-" Or CP1 = "/" Or CP1 = "*" Or CP1 = "!" Or CP1 = "~" Or CP1 = "|" Or CP1 = ":" Or CP1 = "&" Or CP6 = "Select" Or CP4 = "Case" Or CP4 = "With" Or CP2 = "If" Or CP3 = " Or" Or CP4 = " And" Or CP4 = " Not" Or CP4 = " Xor" Or CP5 = "Debug" Or CP3 = " To" Or CP4 = "Step" Or CP5 = "Until" Or CP5 = "While" Or CP6 = "ElseIf" Or CP9 = "Protected" Or CP6 = "Shared" Or CP6 = "Global" Or CP6 = "Static" Or CP15 = "ProcedureReturn"
                           Caractere = " " + Caractere
                        ElseIf CP1 <> "(" And CP1 <> "" And CP1 <> "@" And CP1 <> "["
                           Caractere = " " + Caractere + " "
                        EndIf
                        Ligne = Gauche + Caractere + Droite
                        
                     ElseIf Caractere = ","
                        Ligne = Gauche + Caractere + " " + Droite
                        
                     ElseIf Caractere = "=" Or Caractere = ">" Or Caractere = "<"
                        CP1 = Right(Gauche, 1)
                        If CP1 = ">" Or CP1 = "<"
                           Caractere = Caractere + " "
                        Else
                           Caractere = " " + Caractere + " "
                        EndIf
                        Ligne = Gauche + Caractere + Droite
                        
                     ElseIf Caractere = Chr(34)
                        Repeat
                           p = p + 1
                           Caractere = Mid(Ligne, p, 1)
                        Until Caractere = Chr(34)
                        
                     ElseIf Caractere = "'"
                        Repeat
                           p = p + 1
                           Caractere = Mid(Ligne, p, 1)
                        Until Caractere = "'"
                        
                     ElseIf Caractere = ";"
                        If Gauche <> ""
                           Caractere = " " + Caractere
                        EndIf
                        Caractere_Suivant1.s = Left(Droite, 1)
                        Caractere_Suivant2.s = Left(Droite, 2)
                        Caractere_Suivant3.s = Left(Droite, 3)
                        If Caractere_Suivant2 = "- " Or Caractere_Suivant2 = "{ " Or Caractere_Suivant3 = "{- " Or Caractere_Suivant2 = "} " Or Caractere_Suivant3 = "}- " Or Caractere_Suivant2 = "/ "Or Caractere_Suivant2 = "[ " Or Caractere_Suivant2 = "] "
                           Ligne = Gauche + Caractere + Droite
                        ElseIf Caractere_Suivant2 = "{-"
                           Ligne = Gauche + Caractere + "{- " + Right(Droite, Len(Droite) - 2)
                        ElseIf Caractere_Suivant2 = "}-"
                           Ligne = Gauche + Caractere + "}- " + Right(Droite, Len(Droite) - 2)
                        ElseIf Caractere_Suivant1 = "-" Or Caractere_Suivant1 = "{" Or Caractere_Suivant1 = "}" Or Caractere_Suivant1 = "/" Or Caractere_Suivant1 = "[" Or Caractere_Suivant1 = "]"
                           Ligne = Gauche + Caractere + Caractere_Suivant1 + " " + Right(Droite, Len(Droite) - 1)
                        Else
                           Ligne = Gauche + Caractere + " " + Droite
                        EndIf
                        p = Longueur
                        
                     EndIf
                     
                  Until p >= Longueur
                  
                  If Eof(#Fichier0)
                     WriteString(#Fichier1, Ligne)
                  Else
                     WriteStringN(#Fichier1, Ligne)
                  EndIf
                  
                  SetGadgetState(#Progression, Round(100 * Loc(#Fichier0) / Taille, 1))
               Until Eof(#Fichier0)
               
               CloseFile(#Fichier0)
               CloseFile(#Fichier1)
               DeleteFile(Fichier + ".pbsyntax")
               
               ;- phase 2
               ; MessageRequester("","OK",0)
               
               RenameFile(Fichier, Fichier + ".pbsyntax")
               OpenFile(#Fichier1, Fichier)
               ReadFile(#Fichier0, Fichier + ".pbsyntax")
               
               NbEspace = 0
               Taille = FileSize(Fichier + ".pbsyntax")
               SetGadgetText(#Progression_Texte, txt(28) + "2 / 2")
               
               Repeat
                  
                  Ligne = Trim(ReadString(#fichier0)) ; On lit la ligne du texte
                  
                  If Left(Ligne, 1) <> ";" ; Si la ligne n'est pas une ligne de commentaire
                     
                     ; On regarde le premier mot de la ligne
                     MotComplet.s = StringField(Ligne, 1, " ")
                     Mot.s = StringField(MotComplet, 1, "(")
                     Mot = LCase (StringField(Mot, 1, "."))
                     Debug "'" + Mot + "'  > 1er mot : Tab -"
                     
                     For n = 0 To Nb_Mot_G
                        If Mot = Mot_G(n)
                           NbEspace = NbEspace + Tab_G(n)
                           Debug "Tabulation " + Str(Tab_G(n))
                        EndIf
                     Next
                     
                  EndIf
                  
                  ;{- Enregistremement de la ligne
                  If NbEspace <= 0 ; en cas de problème avec la mise en forme, par exemple un endif sans if
                     Espace$ = ""
                  ElseIf Tab_Reelle
                     Espace$ = RSet("", NbEspace, Chr(9))
                  Else
                     Espace$ = Space(NbEspace * Tab)
                  EndIf
                  If Eof(#fichier0)
                     WriteString(#fichier1, Ligne)
                  Else
                     WriteStringN(#fichier1, Espace$ + Ligne)
                  EndIf
                  ;}
                  
                  If Left(Ligne, 1) <> ";"
                     Index = 0
                     Repeat
                        
                        Index = Index + 1
                        MotComplet = StringField(Ligne, Index, " ")
                        Mot = StringField(MotComplet, 1, "(")
                        Mot = LCase (StringField(Mot, 1, "."))
                        Debug "'" + Mot + "'  > Mot : Tab +"
                        
                        If Texte(Ligne, Index) = 0
                           For n = 0 To Nb_Mot_D
                              If Mot = Mot_D(n)
                                 NbEspace = NbEspace + Tab_D(n)
                                 Debug "Tabulation " + Str(Tab_D(n))
                              EndIf
                           Next
                        EndIf
                        
                     Until MotComplet = "" Or Mot = ";" Or Mot = ";-" Or Mot = ";{" Or Mot = ";}" Or Mot = ";{-" Or Mot = ";/" Or Mot = ";[" Or Mot = ";]"
                     
                     Index = 1
                     Repeat
                        Index = Index + 1
                        MotComplet = StringField(Ligne, Index, " ")
                        Mot = StringField(MotComplet, 1, "(")
                        Mot = LCase (StringField(Mot, 1, "."))
                        Debug "'" + Mot + "'  > Mot suivant : Tab -"
                        
                        If Texte(Ligne, Index) = 0
                           For n = 0 To Nb_Mot_G
                              If Mot = Mot_G(n)
                                 NbEspace = NbEspace + Tab_G(n)
                                 Debug "Tabulation " + Str(Tab_G(n))
                              EndIf
                           Next
                        EndIf
                        
                     Until MotComplet = "" Or Mot = ";" Or Mot = ";-" Or Mot = ";{" Or Mot = ";}" Or Mot = ";{-" Or Mot = ";/" Or Mot = ";[" Or Mot = ";]"
                     
                  EndIf
                  
                  SetGadgetState(#Progression, Round(100 * Loc(#fichier0) / Taille, 1))
               Until Eof(#fichier0)
               
               CloseFile(#fichier0)
               CloseFile(#fichier1)
               DeleteFile(Fichier + ".pbsyntax")
               SetGadgetText(#Progression_Texte, Txt(29))
               
            Else
               MessageRequester(Txt(30), Txt(31) + Fichier, 0)
            EndIf
         EndIf
      Else
         MessageRequester(Txt(30), Txt(31) + Fichier, 0)
      EndIf
   EndIf
EndProcedure

Procedure FichiersRecents(Fichier.s)
   If LCase (GetExtensionPart(Fichier)) = "pb"
      For i = 1 To 3
         For ii = 1 To 2
            recent(5 - i, ii) = recent(4 - i, ii)
         Next
      Next
      
      recent(1, 1) = GetFilePart(Fichier)
      recent(1, 2) = Fichier
      
      FreeMenu(#Menu_bar_0)
      If CreateMenu(#Menu_bar_0, WindowID(#Window_principale))
         MenuTitle(Txt(14))
         MenuItem(#Ouvrir, Txt(15))
         MenuItem(#Ouvrir_dossier, Txt(17))
         MenuBar()
         OpenSubMenu(Txt(16))
            MenuItem(#Recent1, "1 " + recent(1, 1))
            MenuItem(#Recent2, "2 " + recent(2, 1))
            MenuItem(#Recent3, "3 " + recent(3, 1))
            MenuItem(#Recent4, "4 " + recent(4, 1))
         CloseSubMenu()
         MenuTitle("?")
         MenuItem(#Concepteur, Txt(18))
         MenuBar()
         MenuItem(#MENU_Langue, "Select language...")
      EndIf
   EndIf
EndProcedure

Procedure Traitement_Dossier(Dossier.s, n.l)
   If Right(Dossier, 1) <> "\"
      Dossier = Dossier + "\"
   EndIf
   If ExamineDirectory(n, Dossier, "*.*")
      Repeat
         FileType = NextDirectoryEntry(n)
         If FileType = 1
            Nom.s = DirectoryEntryName(n)
            If LCase (GetExtensionPart(Nom)) = "pb"
               Analyse(Dossier + Nom)
            EndIf
         ElseIf FileType = 2
            Nom.s = DirectoryEntryName(n)
            If Nom <> "." And Nom <> ".."
               Traitement_Dossier(Dossier + Nom, n + 1)
            EndIf
         EndIf
      Until FileType = 0
   EndIf
EndProcedure

Procedure Traitement(choix)
   
   Select choix
      Case 0
         Fichier.s = OpenFileRequester(Txt(26) + "Purebasic *.pb", adresse$, Txt(26) + "Purebasic|*.pb;*.pbi;*.pbfl", 0, #PB_Requester_MultiSelection)
         Repeat
            If Fichier <> ""
               FichiersRecents(Fichier)
               Analyse(Fichier)
            EndIf
            Fichier = NextSelectedFileName()
         Until Fichier = ""
         
      Case -1
         Fichier = txt$
         FichiersRecents(Fichier)
         Analyse(Fichier)
         
      Case -2
         dropped.l = EventwParam()
         num.l = DragQueryFile_(dropped, -1, "", 0)
         For Index = 0 To num - 1
            Size.l = DragQueryFile_(dropped, Index, 0, 0)
            Fichier.s = Space(Size)
            DragQueryFile_(dropped, Index, Fichier, Size + 1)
            If FileSize(Fichier) >= 0
               FichiersRecents(Fichier)
               Analyse(Fichier)
            ElseIf FileSize(Fichier) = -2
               Traitement_Dossier(Fichier, 1)
            EndIf
         Next
         DragFinish_(dropped)
         
      Case -3
         Fichier.s = PathRequester(Txt(9), adresse$)
         If Fichier <> ""
            Traitement_Dossier(Fichier, 1)
         EndIf
         
         
         
      Default
         Fichier.s = recent(choix, 2)
         nom$ = recent(choix, 1)
         Analyse(Fichier)
   EndSelect
   
EndProcedure

Procedure Charge_Langue()
   If FileSize("PBSyntax\" + language + "\Language.ini") < 0
      language = "English"
   EndIf
   If OpenPreferences("PBSyntax\" + language + "\Language.ini")
      For n = 0 To #NbTxt
         Txt(n) = ReadPreferenceString("Txt " + Str(n), "")
      Next
   EndIf
EndProcedure

Procedure Charger()
   
   OpenPreferences("PBSyntax\PBSyntax.inf")
   PreferenceGroup("Général")
   adresse$ = ReadPreferenceString("Dossier de démarrage", "c:\program files\purebasic\")
   Tab = ReadPreferenceLong("Tabulation", 2)
   Tab_Reelle = ReadPreferenceLong("Tabulation réelle", 0)
   language = ReadPreferenceString("Langue", "English")
   PreferenceGroup("Options")
   PbTab = ReadPreferenceLong("Lecture de la tabulation de PB", 1)
   PbLanguage = ReadPreferenceLong("Lecture de la langue de PB", 1)
   PbPref = ReadPreferenceString("Adresse de PureBasics.prefs", GetSpecialFolderLocation(#CSIDL_APPDATA) + "PureBasic\PureBasic.prefs")
   FichierBak = ReadPreferenceLong("Création d'un Bak", 1)
   PreferenceGroup("Documents récents")
   For i = 1 To 4
      recent(i, 1) = ReadPreferenceString("Nom du fichier " + Str(i), "")
      recent(i, 2) = ReadPreferenceString("Adresse du fichier " + Str(i), "")
   Next
   ClosePreferences()
   
   OpenPreferences(PbPref)
   PreferenceGroup("Global")
   If PbTab
      Tab = ReadPreferenceLong("TabLength", 2)
      Tab_Reelle = ReadPreferenceLong("RealTab", 0)
   EndIf
   If PbLanguage
      language = ReadPreferenceString("CurrentLanguage", "English")
   EndIf
   ClosePreferences()
   
   Charge_Langue()
   
   If FileSize(PbPref) = -1
      PbPref = GetSpecialFolderLocation(#CSIDL_APPDATA) + "PureBasic\PureBasic.prefs"
   EndIf
   
   If FileSize(PbPref) = -1
      Repeat
         MessageRequester("PBSyntax", Txt(32), 16)
         PbPref = OpenFileRequester("PBSyntax", "c:\", "PureBasic.prefs|PureBasic.prefs", 1)
         If PbPref = ""
            End
         EndIf
      Until FileSize(PbPref) > 0
   EndIf
   
   ; chargement des mots clé
   If OpenFile(0, "PBSyntax\Liste +.txt")
      Nb_Mot_D = -1
      Repeat
         Nb_Mot_D + 1
         Texte.s = ReadString(0)
         Mot_D(Nb_Mot_D) = StringField(Texte, 1, Chr(9))
         Tab_D(Nb_Mot_D) = Val(StringField(Texte, 2, Chr(9)))
         ; Debug Mot_D(Nb_Mot_D) + " = " + Str(Tab_D(Nb_Mot_D))
      Until Eof(0)
      CloseFile(0)
   EndIf
   
   If OpenFile(0, "PBSyntax\Liste -.txt")
      Nb_Mot_G = -1
      Repeat
         Nb_Mot_G + 1
         Texte.s = ReadString(0)
         Mot_G(Nb_Mot_G) = StringField(Texte, 1, Chr(9))
         Tab_G(Nb_Mot_G) = Val(StringField(Texte, 2, Chr(9)))
         ; Debug Mot_G(Nb_Mot_G) + " = " + Str(Tab_G(Nb_Mot_G))
      Until Eof(0)
      CloseFile(0)
   EndIf
   
EndProcedure

Procedure Sauver()
   
   If CreatePreferences("PBSyntax\PBSyntax.inf")
      PreferenceComment(" PBSyntax")
      PreferenceComment(" Version 4.0")
      PreferenceComment(" Développeur : LSI (BOUGUIN Régis)")
      PreferenceComment("")
      PreferenceGroup("Général")
      WritePreferenceString("Dossier de démarrage", adresse$)
      WritePreferenceLong("Tabulation", Tab)
      WritePreferenceLong("Tabulation réelle", Tab_Reelle)
      WritePreferenceString("Langue", language)
      PreferenceComment("")
      PreferenceGroup("Options")
      WritePreferenceLong("Lecture de la tabulation de PB", PbTab)
      WritePreferenceLong("Lecture de la langue de PB", PbLanguage)
      WritePreferenceString("Adresse de PureBasics.prefs", PbPref)
      WritePreferenceLong("Création d'un Bak", FichierBak)
      PreferenceComment("")
      PreferenceGroup("Documents récents")
      For i = 1 To 4
         WritePreferenceString("Nom du fichier " + Str(i), recent(i, 1))
         WritePreferenceString("Adresse du fichier " + Str(i), recent(i, 2))
      Next
      ClosePreferences()
   EndIf
   
EndProcedure






;- Debut du programme

Debut:

Charger()
Open_Window()

txt$ = ProgramParameter()
If txt$ <> ""
   Repeat
      txt2$ = ProgramParameter()
      If txt2$ <> ""
         txt$ = txt$ + " " + txt2$
      EndIf
   Until txt2$ = ""
   Traitement(-1)
   Sauver()
   End
EndIf

Repeat
   Event = WaitWindowEvent()
   
   If Event = #PB_Event_Menu
      Select EventMenu()
         Case #Ouvrir
            Traitement(0)
         Case #Ouvrir_dossier
            Traitement(-3)
         Case #Recent1
            Traitement(1)
         Case #Recent2
            Traitement(2)
         Case #Recent3
            Traitement(3)
         Case #Recent4
            Traitement(4)
         Case #Concepteur
            MessageRequester("Concepteur", "Le Soldat Inconnu" + Chr(10) + "Forum français PureBasic", 0)
         Case #MENU_Langue
            Goto choix_langue
      EndSelect
   EndIf
   
   If Event = #PB_Event_Gadget
      Select EventGadget()
         Case #Panel
            Onglet = GetGadgetState(#Panel)
         Case #Gadget_2
            Traitement(0)
         Case #DossierDemarrage_Choisir
            txt$ = PathRequester(Txt(33), adresse$)
            If txt$ <> ""
               adresse$ = txt$
               SetGadgetText(#DossierDemarrage, adresse$)
            EndIf
         Case #DossierDemarrage
            adresse$ = GetGadgetText(#DossierDemarrage)
         Case #Pref_Tab
            Tab = GetGadgetState(#Pref_Tab)
            If GetGadgetText(#Pref_Tab) <> Str(Tab)
               SetGadgetText(#Pref_Tab, Str(Tab))
            EndIf
         Case #PrefPB_Langue
            PbLanguage = GetGadgetState(#PrefPB_Langue)
            ActiveOption()
            If PbLanguage = 0
               Goto choix_langue
            Else
               Sauver()
               CloseWindow(#Window_principale)
               Goto debut
            EndIf
         Case #PrefPB_Tab
            PbTab = GetGadgetState(#PrefPB_Tab)
            If PbTab = 0
               ActiveOption()
            Else
               Sauver()
               CloseWindow(#Window_principale)
               Goto debut
            EndIf
            
         Case #Pref_Tab_VraiTabulation
            Tab_Reelle = GetGadgetState(#Pref_Tab_VraiTabulation)
         Case #Fichier_BAK
            FichierBak = GetGadgetState(#Fichier_BAK)
      EndSelect
   EndIf
   
   If Event = #WM_DROPFILES
      Traitement(-2)
   EndIf
   
Until Event = #PB_Event_CloseWindow

Sauver()

End


choix_langue:
Sauver()
CloseWindow(#Window_principale)

If OpenWindow(#Window_langue, 0, 0, 300, 30, "Select your language", #PB_Window_ScreenCentered)
   If CreateGadgetList(WindowID(#Window_langue))
      ComboBoxGadget(#Langue, 5, 5, 290, 20)
   EndIf
   
   liste_langue(0) = "Deutsch"
   liste_langue(1) = "Dutch"
   liste_langue(2) = "English"
   liste_langue(3) = "Francais"
   liste_langue(4) = "Italian"
   liste_langue(5) = "Portuguese"
   liste_langue(6) = "Spanish"
   
   pos = -1
   For n = 0 To 6
      If FileSize("PBSyntax\" + liste_langue(n) + "\Language.ini") >= 0
         pos = pos + 1
         liste_langue(pos) = liste_langue(n)
         AddGadgetItem(#Langue, -1, liste_langue(n))
      EndIf
   Next
   
   language = ""
   Repeat
      Event = WaitWindowEvent()
      If Event = #PB_Event_Gadget
         Select EventGadget() ; boutons, zone de texte, ...
            Case #Langue
               pos = GetGadgetState(#Langue)
               ; Debug pos
               If pos >= 0
                  language = liste_langue(pos)
                  ; Debug language
               EndIf
         EndSelect
      EndIf
      
   Until language <> ""
   
   CloseWindow(#Window_langue)
   Sauver()
EndIf

Goto debut

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Jeu 16/Juin/2011 8:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4440
Localisation: Isere
Merci Soldat
Tes codes sont beaux, ton avatar est beau, ton site que je viens de revisiter est classe et beau, ......p'tetre meme que toi aussi t'es beau........ :mrgreen:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Jeu 16/Juin/2011 13:54 
Hors ligne

Inscription: Mer 11/Nov/2009 18:17
Messages: 1251
Localisation: Poitiers (Vienne)
Kcc 8O

Bin va-y, demande le en mariage t'en que on y est :lol:
Aller je te soutiens !, va-y je te dis :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


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Ven 17/Juin/2011 8:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
Bon, la nouvelle version est tellement plus simple que l'ancienne que je m'impressionne moi même :mrgreen:

Je ponds une interface, teste sur mes plus gros programmes (ce qui devrait permettre un bon débogage) et je poste.


@KCC
Oui, je suis beau ! (je ne vais pas dire le contraire de toute façon :mrgreen: )

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Ven 17/Juin/2011 9:43 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4440
Localisation: Isere
Citation:
Oui, je suis beau ! (je ne vais pas dire le contraire de toute façon )
:lol:

Citation:
la nouvelle version est tellement plus simple que l'ancienne
Ce qui est rigolo dans la prog, c'est que quand on regarde de plus pres un vieux code, on jurerais que c'est pas nous qui l'avons codé, tellement c'est mauvais 8O
Je me demande, si la programmation ne décele pas la pluripersonalité qui regne en nous :mrgreen:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Ven 17/Juin/2011 13:10 
Hors ligne

Inscription: Mer 11/Fév/2004 0:32
Messages: 1015
Localisation: Québec, Canada
Kwai chang caine a écrit:
Ce qui est rigolo dans la prog, c'est que quand on regarde de plus pres un vieux code, on jurerais que c'est pas nous qui l'avons codé, tellement c'est mauvais 8O
Je me demande, si la programmation ne décele pas la pluripersonalité qui regne en nous :mrgreen:


Non, ce n'est pas ça ! Le phénomène s'explique de façon très simple en fait.

À chaque ligne de code fonctionnelle, on progresse sur le plan de la programmation. En résumé, après avoir créé un programme on est meilleur que lorsque l'on a commencé.

C'est pour ça que mon logiciel "Dev-Type" (générateur de commande automatique) n'est pas encore prêt pour la simple et bonne raison que le code de la version précédente était tellement complexe et difficile à modifier que faire un petit ajout pour prendre en compte les tableaux, les listes chaînée et les maps dans les structures était tout bonnement impossible à faire. J'ai donc été contraint de ré-écrire 80% du générateur de code. Et au passage j'en ai profité pour le simplifier au maximum en combinant certaines procédures similaires ensembles et en virant les instructions inutiles.

Ce qu'il me reste à faire c'est la partie pour les tableaux statiques à dimension multiple genre :

Code:
#MATRIX_LINE_MAX = 4
#MATRIX_ROW_MAX = 4

Structure Vector
 
  Vec_Element.d[#MATRIX_ROW_MAX]
 
EndStructure

Structure Matrix
 
  Mat_Element.Vector[#MATRIX_LINE_MAX]
 
EndStructure


Je ne donne pas de date sur quand j'aurai terminé de programmer tout ça, patience donc.

A+
Guimauve


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Sam 18/Juin/2011 20:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4440
Localisation: Isere
Citation:
À chaque ligne de code fonctionnelle, on progresse sur le plan de la programmation. En résumé, après avoir créé un programme on est meilleur que lorsque l'on a commencé.

Oh que c'est vrai !!!
Remarque c'est comme dans la vie....on se couche toujours moins bete que l'on se leve :roll:
Quoi que...ça marche pas toujours sur tout le monde :lol: :lol:

Citation:
Je ne donne pas de date sur quand j'aurai terminé de programmer tout ça, patience donc.

J'avais lu ton projet, comme dab pas tout compris :oops:
Mais ça avait l'air un super truc, comme beaucoup de ce que tu codes (Mode lèche botte OFF) 8)
Je serais curieux de voir ça des que ce sera prés :wink:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Mer 29/Juin/2011 19:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4311
Localisation: Clermont ferrand OU Olsztyn
ça a bien avancé, cette seconde version. Encore quelques tests et je poste une version pour lui faire subir vos essais cruels et sanguinaires. (surtout les essais de KCC, si ça marche pour lui, c'est bon partout :mrgreen: )

_________________
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)]


Haut
 Profil  
 
 Sujet du message: Re: PBSyntax - Mise en forme du code
MessagePosté: Mer 29/Juin/2011 21:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4440
Localisation: Isere
:lol: :lol:
Le premier essai cruel, c'est deja que je comprenne comment lancer le code
Apres c'est que je comprenne comment faire marcher le programme
Puis que j'ai la bonne config pour qu'il tourne, entre mes vieilles machines avec des OS prehistoriques
Et au final, que je fasse pas une connerie que le programmeur a pas prévu :mrgreen:

Mais si tu veux le nec plus ultra, j'ai le top du top pour les tests
Ma femme !!!
Elle est completement etanche a l'informatique elle tape toujours sur la seule touche que j'ai pas bloqué :?

Alors tu vois..si tu veux....j'te la prete...quelques secondes suffisent :lol:
Remarque elle me dit tout le temps à moi aussi que quelques secondes suffisent :mrgreen: :oops:

Quoi qu'il en soit pour toi, et tes supers codes...je serais toujours la comme BETA testeur personnel :mrgreen:

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 55 messages ]  Aller à la page 1, 2, 3, 4  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye