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