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

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

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

Message 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
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)]
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Ben, on peut pas faire ça avec un jeu de CompilerIf ?
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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.
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)]
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message 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:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
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)]
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Tu tes pas trop fouller ^^ :lol: (Non je deconne c'est genial :wink: )
Répondre