Page 1 sur 1

PBVersion [Codes pouvant générer plusieurs versions]

Publié : sam. 25/sept./2004 18:57
par Le Soldat Inconnu
Salut,

Un nouvel utilitaire à intégrer dans l'éditeur de pb :wink: .

Cet utilitaire permet d'avoir un code générant plusieurs versions d'éxécutables. Cela permet par exemple de compiler une version de démonstration et une version payante d'un programme.

Le principe est simple, il suffit d'insérer des balises dans le code qui vont permettre de commenter ou décommenter certaines parties du code.

Pour que cet utilitaire fonctionne, il suffit d'écrire votre code de la manière suivante :
Image

Après, si vous choissisez la version 1 du code dans mon utilitaire, on obtient :
Image

La version 2 du code se retrouve commentée. Et après, si on choisit la version de 2 du code, on obtiendra la version 1 commentée. C'est tout de même plus pratique et nettement plus rapide que de faire ce genre d'opération manuellement :roll: :D

Pour télécharger la bête maintenant, il suffit d'aller sur mon site. Elle fait 73 ko

Publié : sam. 25/sept./2004 19:20
par filperj
Ben, on peut pas faire ça avec un jeu de CompilerIf ?

Publié : sam. 25/sept./2004 19:44
par Le Soldat Inconnu
si aussi, chacun ses gouts :wink:
moi je préfère comme ça car on ne rique pas de mélanger les parties de code vu qu'une partie en mise en commentaire.

Publié : sam. 25/sept./2004 20:06
par filperj
Ah d'accord, la différence est plus visible, c'est vrai que ça peut aider à pas se mélanger les pinceaux :wink:

Publié : sam. 25/sept./2004 22:28
par Le Soldat Inconnu
Tiens le code de mon bidule pour ceux que ça intéresse

il y a presque pas de commentaires mais c'est tellement compliqué que de toute façon, vous comprendrez pas :mrgreen:

Code : Tout sélectionner

Global Fichier.s, Version.l

Fichier.s = ProgramParameter()
If Fichier <> ""
  Repeat
    Txt.s = ProgramParameter()
    If Txt <> ""
      Fichier = Fichier + " " + Txt
    EndIf
  Until Txt = ""
EndIf

; Fichier = "Test.pb"

If FileSize(Fichier) = -1
  End
EndIf

If OpenWindow(0, 0, 0, 136, 58, #PB_Window_ScreenCentered | #PB_Window_BorderLess | #WS_BORDER | #WS_SYSMENU, "Changeur de version") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf

SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; Pour mettre la fenêtre toujours au premier plan

OptionGadget(1, 2, 2, 80, 18, "Version 1")
OptionGadget(2, 2, 20, 80, 18, "Version 2")
OptionGadget(3, 2, 38, 80, 18, "Version 3")
ButtonGadget(4, 84, 2, 50, 54, "Valider")

SetGadgetState(1, 1)
Version = 1

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_Event_Gadget
    Select EventGadgetID()
      Case 1
        Version = 1
      Case 2
        Version = 2
      Case 3
        Version = 3
      Case 4
        Event = #PB_Event_CloseWindow
    EndSelect
  EndIf
  
Until Event = #PB_Event_CloseWindow



RenameFile(Fichier, Fichier + ".bak")

Type = 0

If CreateFile(1, Fichier)
  If OpenFile(0, Fichier + ".bak")
    Repeat
      
      ; On lit
      UseFile(0)
      Txt = ReadString()
      
      ; On récupère le commentaire si il existe
      Cadre.s = Trim(StringField(Txt, 2, ";"))
      
      Travail = 1
      If Left(Cadre, 1) = "["
        LectureVersion = 1
        Travail = 0
      ElseIf Left(Cadre, 2) = "][" And LectureVersion
        LectureVersion + 1
        Travail = 0
      ElseIf Left(Cadre, 1) = "]" And LectureVersion
        LectureVersion = 0
        Travail = 0
      EndIf
      
      If LectureVersion And Travail
        Txt_Temp.s = LTrim(Txt)
        NbEspace.l = Len(Txt) - Len(Txt_Temp)
        If LectureVersion = Version ; On retire les ";"
          If Left(Txt_Temp, 4) = "; ! "
            Txt = Space(NbEspace) + Right(Txt_Temp, Len(Txt_Temp) - 4)
          EndIf
        Else ; On ajoute des ";"
          If Left(Txt_Temp, 4) <> "; ! "
            Txt = Space(NbEspace) + "; ! " + Txt_Temp
          EndIf
        EndIf
      EndIf
      
      ; On écrit
      UseFile(1)
      If Eof(0)
        WriteString(Txt)
      Else
        WriteStringN(Txt)
      EndIf

    Until Eof(0)
    CloseFile(0)
    DeleteFile(Fichier + ".bak")
  EndIf
  CloseFile(1)
EndIf
Donc vous le voyez, je me suis fatigué à faire ce truc, pfouuu

Publié : dim. 26/sept./2004 10:31
par garzul
Tu tes pas trop fouller ^^ :lol: (Non je deconne c'est genial :wink: )