Voilà, je cherche à faire ceci:
Découper une chaîne Binaire en tronçon de cette façon-ci (Je ne sais pas comment ont appel ça)
J'ai fais se code pour faire se que je voulais, j'aimerais l'optimiser en travaillant pourquoi pas en mémoire, car Mid() est lent avec les grand chaînes et aussi ajouter une chaîne à une autre1011010010011101100001011101010001101010011110101001010101010101010010010011101100101100
Après découpe = 10 110 100 100 1110 110000 10 1110 10 1000 110 10 100 11110 10 100 10 10 10 10 10 10 10 100 100 100 1110 1100 10 1100
Alors je me dis que travailler directement en mémoire serais bien plus rapide, vous en pensez quoi ?, comment faire ?
Comment optimiser se code au maximum ?:
Code : Tout sélectionner
; Découpe une chaîne binaire en tronsson, la chaîne binaire doit forcement commencer par un "1"
Procedure.s DecoupeBin(Bin$)
SaveBin$ = Bin$
; Vérification de la chaîne binaire pour voir s'il elle commance par un "1".
If Not Mid(Bin$, 1, 1) = "1"
MessageRequester("Erreur dans la chaîne binaire...", " La chaîne binaire doit commencer par un " + Chr(34) + "1" + Chr(34) + " !", 68)
End
EndIf
; Vérification de la chaîne binaire pour voir s'il elle contient uniquement des 0 et des 1.
For Index = 1 To Len(Bin$)
Caractere$ = Mid(Bin$, Index, 1)
If Caractere$ <> "0" And Caractere$ <> "1"
MessageRequester("Erreur dans la chaîne binaire...", " La chaîne binaire doit comporter uniquement des 0 et des 1 !", 68)
End
EndIf
Next
Repeat
If Len(Bin$) > 1
If Mid(Bin$, 2, 1) = "0"
Index = FindString(Bin$, "1", 2)
If Index > 0
Buffer$ = Mid(Bin$, 1, Index - 1)
Else
Buffer$ = Mid(Bin$, 1)
EndIf
ElseIf Mid(Bin$, 2, 1) = "1"
For Index = 3 To Len(Bin$)
Caractere$ = Mid(Bin$, Index, 1)
If Caractere$ = "1"
Continue
ElseIf Caractere$ = "0"
For Index = Index To Len(Bin$)
Caractere$ = Mid(Bin$, Index, 1)
If Caractere$ = "0"
Continue
ElseIf Caractere$ = "1"
Break 2
EndIf
Next
EndIf
Next
Buffer$ = Mid(Bin$, 1, Index -1)
EndIf
Else
Buffer$ = Bin$
EndIf
BinDecoupe$ + Buffer$ + " "
Position + Len(Buffer$)
Buffer$ = ""
Bin$ = Mid(Bin$, Index)
Until Position = Len(SaveBin$)
ProcedureReturn Mid(BinDecoupe$, 1, Len(BinDecoupe$) - 1)
EndProcedure
Bin$ = "111111100000001111010010011101100001011101010001101010011110101001010101010101010010010011101100101100"
Debug DecoupeBin(Bin$)
Bin$ = "10110100100111011000010111010100011010100111101010010101010101010100100100111011001011001"
Debug DecoupeBin(Bin$)
Bin$ = "1000001111110100011110111111100001010111110001111010000010101111011010100011110101001101001011010111010"
Debug DecoupeBin(Bin$)